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; } }
4556