log4net的初使用

来源:互联网 发布:maya软件基础教程 编辑:程序博客网 时间:2024/05/22 03:49

最近在写一些C#的程序,想找一个记录日志的软件,当然会想起在java中大名鼎鼎的log4j,查了一下还真的发现有.net版的,就上网找了一些资料学了一下,把它用起来再说,用法很简单,只要把Log4Net.dll加入工程中,然后在App.config添加如下配置文件:

  <?xml version="1.0" encoding="utf-8" ?>

  <configuration>

      <configSections>

          <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

      </configSections>

      <log4net>

          <!--定义输出到文件中-->

          <appender name="LogFileAppender" type="log4net.Appender.FileAppender">

              <!--定义文件存放位置-->

             <file value="log.log" />

             <layout type="log4net.Layout.PatternLayout">

                 <!--每条日志末尾的文字说明-->

                 <footer value="[Footer]--Test By Ring1981  " />

                 <!--输出格式

                     每种转换符号都以%开始,后面跟着一个格式符号和换符号。

                     %-数字 :该项的最小长度,小于最小长度的用空格填充

                     %m(message):输出的日志消息

                     %n(new line):换行 

                     %d(datetime):输出当前语句运行的时刻 

                     %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 

                     %t(thread id):当前语句所在的线程ID 

                     %p(priority): 日志的当前优先级别,即DEBUGINFOWARN… 

                     %c(class):当前日志对象的名称,

                     %L(line ):输出语句所在的行号 

                     %F(file name):输出语句所在的文件名

                     %logger 日志名称

                 -->

                 <conversionPattern value="时间:%date [线程:%thread] %-5level  [:%c][%L]%n    %-5level:%message%newline" />

             </layout>

         </appender>

         <!--定义输出到控制台命令行中-->

         <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

             <layout type="log4net.Layout.PatternLayout">

                 <!--conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /-->

                 <conversionPattern value="时间:%date [线程:%thread] %-5level  [:%c][%L]%n    %-5level:%message%newline" />

             </layout>

         </appender>

         <!--定义输出到windows事件中-->

         <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

             <layout type="log4net.Layout.PatternLayout">

                 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

             </layout>

         </appender>

         <!--RollingFileAppender是输出源也是输出到文件中,只是以自增长的方式-->

         <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">

             <param name="File" value="log/system_log_"/>

             <!--是否覆盖-->

             <param name="AppendToFile" value="true"/>

             <!--设置无限备份=-1 ,最大备份数为1000-->

             <param name="MaxSizeRollBackups" value="100"/>

             <!--每个文件的最大20k-->

             <param name="MaximumFileSize" value="1KB"/>

             <!--名称是否可以更改 false为可以更改-->

             <param name="StaticLogFileName" value="false"/>

             <!--文件名称-->

             <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;"/>

             <param name="RollingStyle" value="Date"/>

             <layout type="log4net.Layout.PatternLayout">

                 <!--conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %SysMessage%newline" /-->

                 <conversionPattern value="时间:%date [线程:%thread] %-5level  [:%c][%L]%n    %-5level:%message%newline" />

             </layout>

         </appender>

         <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->

         <root>

             <appender-ref ref="LogFileAppender" />

             <appender-ref ref="ConsoleAppender" />

             <appender-ref ref="EventLogAppender" />

             <appender-ref ref="RollingLogFileAppender" />

         </root>

     </log4net>

 </configuration>

然后在AssemblyInfo.cs文件最后加入[assembly: log4net.Config.DOMConfigurator()]即可用了

示例:

  class Program

  {

          private static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

  

          static void Main(string[] args)

          {

              log.Debug("测试日志");

              log.Info("测试日志");

              log.Warn("测试日志");

             Console.Read();

         }

 }

运行效果: