log4Net使用
http://logging.apache.org/log4net/
1.Log4net主要结构分析
1.1 Logger:是应用程序与Log4net进行交互的主要模块,它也是log4net生成log的模块。Logger主要负责得到log信息,
得到log信息之后接下来的显示log则是在Layout模块中处理。
2.2 Logger Level:Log级别
OFF
FATAL
ERROR
WARN
INFO
DEBUG
ALL
2.3 Appender: log目的地
ConsoleAppender:将日志输出到控制台
FileAppender:将日志输出到文件中
RollingFileAppender:将日志以回滚文件的形式写到文件中
EventLogAppender:将日志写到window event log
AdoNetAppender:将日志写入数据库中
2.4 Layout:log格式化器
%m(message):输出的日志信息
%n(new line):换行
%d(datatime):输出当前语句运行的时刻
%r(run time):输出程序从运行至执行当前语句时消耗的毫炒数
%t(thread id):线程ID
%p(priority):日志的当前优先级别,debug,info,warn...等
%c(class)、%logger:当前日志对象的名称
%file:输出语句所在的文件名
%l(line):输出语句所在的行号
%数字:表示该项的最小长度,如果不够,则用空格填充。
2.在Winform项目中应用log4net框架
2.1 使用Nuget安装log4net
2.2 在AssemblyInfo文件中注册Log4net的配置文件
//配置文件为app.config
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
//配置文件为log4net.config
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
2.3 配置app.config
1 <?xml version="1.0"?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 5 </configSections> 6 7 <log4net> 8 <!--定义输出到文件中--> 9 <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 10 <!--定义文件存放位置--> 11 <file value="D:/log4netfile.txt" /> 12 <appendToFile value="true" /> 13 <layout type="log4net.Layout.PatternLayout"> 14 <!--每条日志末尾的文字说明--> 15 <footer value="by Paul" /> 16 <!--输出格式--> 17 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> 18 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" /> 19 </layout> 20 </appender> 21 22 <!--定义以回滚方式输出到文件中(按照文件大小记录日志)--> 23 <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 24 <!--定义文件存放位置--> 25 <file value="D:/log4netfile.txt" /> 26 <appendToFile value="true" /> 27 <rollingStyle value="size"/> 28 <!--最大的日志文件个数,生成的文件名会是log4netFile.txt.1,log4netFile.txt.2 ...如果记录的日志超过10个,会从第1 个文件开始覆盖--> 29 <maxSizeRollBackups value="10"/> 30 <!--每个日志文件最大100KB--> 31 <maximumFileSize value="100KB"/> 32 <staticLogFileName value="true" /> 33 <layout type="log4net.Layout.PatternLayout"> 34 <!--每条日志末尾的文字说明--> 35 <footer value="by Paul" /> 36 <!--输出格式--> 37 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> 38 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" /> 39 </layout> 40 </appender> 41 42 <!--定义以回滚方式输出到文件中(按照日期记录日志)--> 43 <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender"> 44 <!--定义文件存放位置--> 45 <file value="D:/log4netfile_DateFormat_log.txt" /> 46 <appendToFile value="true" /> 47 <rollingStyle value="Date"/> 48 <datePattern value="yyyyMMdd"/> 49 <layout type="log4net.Layout.PatternLayout"> 50 <!--每条日志末尾的文字说明--> 51 <footer value="by Paul" /> 52 <!--输出格式--> 53 <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> 54 <conversionPattern value="记录时间:%d 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" /> 55 </layout> 56 </appender> 57 58 <!--定义输出到控制台命令行中--> 59 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 60 <layout type="log4net.Layout.PatternLayout"> 61 <conversionPattern value="%date [%thread] %-5level %logger - %file - %message%newline" /> 62 </layout> 63 </appender> 64 65 <!--定义输出到windows事件中--> 66 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 67 <layout type="log4net.Layout.PatternLayout"> 68 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 69 </layout> 70 </appender> 71 72 <!--定义输出到Sql server数据库中--> 73 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 74 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 75 <connectionString value="Data Source=192.168.0.57;Initial Catalog=IPP_PCL_DEV;User ID=IPPCLDev;Password=smlSI123"/> 76 <commandText value="INSERT INTO Log (LogLevel,Logger,Message,Exception,LogDate) VALUES (@log_level,@logger,@message,@exception,@log_date)" /> 77 <bufferSize value="1" /> 78 79 <parameter> 80 <parameterName value="@log_date" /> 81 <dbType value="DateTime" /> 82 <layout type="log4net.Layout.RawTimeStampLayout"/> 83 </parameter> 84 85 <parameter> 86 <parameterName value="@log_level" /> 87 <dbType value="String" /> 88 <size value="50" /> 89 <layout type="log4net.Layout.PatternLayout"> 90 <conversionPattern value="%level" /> 91 </layout> 92 </parameter> 93 94 <parameter> 95 <parameterName value="@logger" /> 96 <dbType value="String" /> 97 <size value="255" /> 98 <layout type="log4net.Layout.PatternLayout"> 99 <conversionPattern value="%logger" /> 100 </layout> 101 </parameter> 102 103 <parameter> 104 <parameterName value="@message" /> 105 <dbType value="String" /> 106 <size value="200" /> 107 <layout type="log4net.Layout.PatternLayout"> 108 <conversionPattern value="%m" /> 109 </layout> 110 </parameter> 111 112 <parameter> 113 <parameterName value="@exception"/> 114 <dbType value="String"/> 115 <size value="2000"/> 116 <layout type="log4net.Layout.ExceptionLayout"/> 117 </parameter> 118 119 120 </appender> 121 122 <root> 123 <level value="DEBUG" /> 124 <appender-ref ref="ConsoleAppender"/> 125 <appender-ref ref="AdoNetAppender"/> 126 </root> 127 </log4net> 128 </configuration>
2.4 编写Log
1 class Program 2 { 3 4 [STAThread] 5 static void Main() 6 { 7 ILog log = LogManager.GetLogger("Program333"); 8 9 log.Error("this is a log information",new ArgumentNullException()); 10 11 log.Warn("this is a log information"); 12 13 log.Info("this is a log information"); 14 15 log.Debug("this is a log information"); 16 17 Console.ReadKey(); 18 } 19 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。