LYWILL设计运营 - 网站运营与推广、开发技术、成功项目展示。

Log4Net 详细配置说明

 Log4Net 配置举例:

<configSections>

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

<!--记录日志到数据库-->
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=GAS-HECHEN;initial catalog=dsc141051_db;integrated security=false;persist security info=True;User ID=sa;Password=000000" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>

<!--输入日志到控制台-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[时间]:%d%n[级别]:%p%n[内容]:%m%n%n"></conversionPattern>
</layout>
</appender>

<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="file" value="D:\a.log"></param>
<param name="appendToFile" value="true"></param>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[时间]:%d%n[级别]:%p%n[内容]:%m%n%n"></conversionPattern>
</layout>
</appender>

<root>
<level value="INFO"></level>
<appender-ref ref="FileAppender"></appender-ref>
<appender-ref ref="ConsoleAppender"></appender-ref>
</root>
<logger name="MyLogger">
<level value="INFO"></level>
<appender-ref ref="FileAppender"></appender-ref>
<appender-ref ref="ConsoleAppender"></appender-ref>
</logger>
</log4net>

这个配置文件定义了三种不同的Appender,分别是ADO.NET 记录到数据,ConsoleAppender 从控制台输出, FileAppender 日志信息文件输出。

 

根据上面的日志配置文件使用如下代码测试:

 

这里需要注意,log4net.Config.XmlConfigurator.Configure();   这个相当于初始化Log4net, 如果是在Web程序中 我们可以将这句话添加到 Global.asax 文件的Application_Start(object sender, EventArgs e) 方法中。在程序启动的时候就初始化配置信息。

  上面的程序运行结果图,控制台输出结果为:

 

信息记录到指定的磁盘文件中,记录的结果如下图:

 

 

 这里说明两个配置:

 

这里的root 和 logger 配置节点,root 就相当于默认的日志对象配置,而logger是指定特定的日志配置。他们可以共存。

对于这两个节点下面都有 level 和 appender-ref 节点,分别用于指定日志的输出级别和引用哪些附着器。每个日志对象都可以使用多个appender,这里的配置同时使用文件输出和控制台输出。得到的结果就是上面两个结果图。

 

  下面的logger对象添加了AdoNetAppender附着器,当使用MyLogger日志对象的时候就会使用这三种不同的方式记录日志。

 

上面的程序声明了两个日志对象 log 和 log1,log 是在初始化的时候存在的,它得到的是<logger name="MyLogger"> 这个日志对象,而log1 是LogManager 中不存在的日志对象,这里它会重新创建一个并且由LogManager 管理,后面再次使用则使用这个已经存在的对象。 这里两个日志对象同时使用结果如下:

 

 

现在我修改配置文件的日志文件输出级别: 

<logger name="MyLogger">
      
<level value="WARN"></level>
      
<appender-ref ref="FileAppender"></appender-ref>
      
<appender-ref ref="ConsoleAppender"></appender-ref>
      
<appender-ref ref="AdoNetAppender"></appender-ref>

</ logger>

 运行得到的结果如图:

 

显然MyLogger对象日志没有输出日志信息。 

 

六. Log4Net 参数说明 

上面我们看到的配置文件中有类似%m %n 等这样的符号,这些符号都是有特殊意义的。

   %m[%message]       : 输出的日志消息

   %n                                : 换行

   %d[%datetime]   : 输出当前语句运行的时刻

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

   %d                                 当前语句所在的线程ID

   %p                  : 日志的当前优先级别

   %c                  当前日志对象的名称

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

   %F                  输出语句所在的文件名

         %-数字                      :表示该项的最小长度,如果不够,则用空格填充 

标签: log4net

作者:lywill 分类:开发技术 浏览:3134 评论:0