WPF之lognet4的基本使用
log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文介绍lognet4的基本使用。
第一步:新建一个项目LoginUI,然后在该项目下新建一个日志管理类LogManager,再添加对lognet4.dll的引用


- namespace LoginUI
- {
- public class LogManager
- {
- private static LogManager _instance;
- private static log4net.ILog _logger;
- protected LogManager()
- {
- InitialiseLogger();
- }
- public static LogManager Instance
- {
- get
- {
- if (_instance == null)
- _instance = new LogManager();
- return _instance;
- }
- }
- public log4net.ILog Logger
- {
- get { return _logger; }
- }
- void InitialiseLogger()
- {
- //通过系统配置文件配置logger ,GUIClientLogger这个名称和待会配置文件中的名称要一致
- _logger = log4net.LogManager.GetLogger("GUIClientLogger");
- }
- }
- }
第二步:在项目的配置文件App.Config中添加下述代码


- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <configSections>
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" />
- </configSections>
- <log4net>
- <root>
- <level value="WARN" />
- <appender-ref ref="LogFileAppender" />
- <!--<appender-ref ref="ConsoleAppender" />-->
- </root>
- <logger name="GUIClientLogger">
- <level value="ALL" />
- </logger>
- <!--输出到文件-->
- <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
- <param name="File" value="Log/" />
- <param name="AppendToFile" value="true" />
- <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
- <param name="MaxSizeToRollBackups" value="-1" />
- <!-- 每个文件的大小限制 -->
- <param name="MaximumFileSize" value="30MB" />
- <!-- RollingStyle Composite 综合 Size 按大小 Date 按时间 -->
- <param name="RollingStyle" value="Composite" />
- <!--设置文件名后缀的格式,那个"起到的作用是转义,就是把.log当作字面义,而不是时间日期的格式定义,如果要改为txt的格式,把log改为txt即可-->
- <param name="DatePattern" value='yyyy-MM-dd/"GUIClientLog.log"' />
- <!--<param name="DatePattern" value='yyyy-MM-dd/""GUIClientLog_"yyyyMMdd".log""' />-->
- <param name="PreserveLogFileNameExtension" value="true" />
- <!-- 关掉固定文件名-->
- <param name="StaticLogFileName" value="false" />
- <layout type="log4net.Layout.PatternLayout">
- <param name="Header" value="[Header]
- " />
- <param name="Footer" value="[Footer]
- " />
- <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
- </layout>
- <filter type="log4net.Filter.LevelRangeFilter">
- <param name="LevelMin" value="ALL" />
- <param name="LevelMax" value="OFF" />
- </filter>
- </appender>
- <!--输出控制台-->
- <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
- <layout type="log4net.Layout.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
- </layout>
- </appender>
- </log4net>
- <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
- </configuration>
第三步:在AsseembllyInfo.cs中添加下述代码


- [assembly:log4net.Config.XmlConfigurator(ConfigExtension="Config",Watch=true)]
输出样式:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
%f(file):输出语句所在的文件名。
%l(line):输出语句所在的行号。
%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。
第四步:使用LoggerManager记录日志信息,btnLogin是那个登陆按钮,点击按钮后就能在启动目录下的Log文件夹下的日志文件看到一条日志消息。


- private void btnLogin_Click(object sender, RoutedEventArgs e)
- {
- User user = new User("10001", "zxtang");
- if (txtUserId.Text == user.UserID && txtPassWord.Password == user.Password)
- {
- LogManager.Instance.Logger.Info(string.Format("User [{0}] login Successd.", txtUserId));
- //发送消息
- Messenger.Default.Send("", "logIn");
- Close();
- }
- else
- {
- Messenger.Default.Send("","logOut");
- LogManager.Instance.Logger.Info(string.Format("User [{0}] login Falied.", txtUserId));
- return;
- }
- }
WPF之lognet4的基本使用的更多相关文章
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- MVVM框架从WPF移植到UWP遇到的问题和解决方法
MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
- MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信
MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式和在WPF中的实现(二)数据绑定
MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...
随机推荐
- Html飞机大战(一):绘制动态背景
好家伙,飞机大战终于开始弄了 这会有很多很多复杂的东西,但是我们总要从最简单,和最基础的部分开始, 我们先从背景开始弄吧! 1.绘制静态背景 这里我们会用到canvas <!DOCTYPE ...
- Flume 组件安装配置
下载和解压 Flume 实验环境可能需要回至第四,五,六章(hadoop和hive),否则后面传输数据可能报错(猜测)! 可 以 从 官 网 下 载 Flume 组 件 安 装 包 , 下 载 地 址 ...
- KingbaseES 中select distinct on 语句
用法 SELECT DISTINCT ON ( expression [, ...] ) 把记录根据[, -]的值进行分组,分组之后仅返回每一组的第一行. 需要注意的是,如果不指定ORDER BY子句 ...
- Yarn上运行spark-shell和spark-sql命令行
spark-shell On Yarn spark-shell \ --master yarn-client \ --executor-memory 1G \ --num-executors 10 s ...
- 原生JavaScript对【DOM元素】的操作——增、删、改、查
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C 语言 struct 第一个成员变量的妙用
一.双重身份 如下定义了一个 School 结构体: typedef struct School { int a; int b; }SCHOOL_S; SCHOOL_S stSch; 下面我们来输出一 ...
- [Python]-字典-实践经验总结
字典是Python中常用的一个数据类型. 与列表有相似的用法,表现在列表的下标和字典的键值可以通过相似的方式读取数据: list_name[0] = value dict_name['key'] = ...
- day03-代码实现02
多用户即时通讯系统03 4.编码实现02 4.2功能实现-拉取在线用户 4.2.1思路分析 客户端想要知道在线用户列表,就要向服务器发送请求(Message),因为只有服务器端保持着所有与客户端相连接 ...
- MyCLI :一个支持自动补全和语法高亮的 MySQL/MariaDB 客户端
MyCLI 是一个易于使用的命令行客户端,可用于受欢迎的数据库管理系统 MySQL.MariaDB 和 Percona,支持自动补全和语法高亮.它是使用 prompt_toolkit 库写的,需要 P ...
- 从dva到vuex的使用方法()
官网文档:https://vuex.vuejs.org/zh/ 辅助理解的博客:https://blog.csdn.net/m0_70477767/article/details/125155540 ...