冠冕堂皇

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

源码下载

dll下载(1.2.13版本)

1、LogFileAppender的使用经验

使用VS2010新建TestForm工程,使用log4net的步骤如下:

1、引用log4net.dll(最新的版本是1.2.13);

2、新建的项目没有App.config文件,添加新建项“应用程序配置文件” App.config;

3、在App.config中添加如下内容:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
            log4net-net-1.0"/>
  </configSections>
  <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="LogFileAppender"/>
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="log-file.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n"/>
      </layout>
    </appender>
  </log4net>
configSections和log4net标签

4、在Properties的AssemblyInfo.cs文件末尾添加如下内容:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
assembly文件的配置

5、添加一个button,所有代码如下:

namespace TestForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");
            log.Debug("hello");
        }
    }
}
使用方法

6、运行后点击button,在Debug文件夹(TestForm.exe所在的文件夹)下,有log-file.txt文件,打开内容如下:

2014-06-10 14:05:30,561 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:30,679 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:31,037 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
2014-06-10 14:05:31,249 [9] DEBUG My1stLogger [(null)] <(null)>
 - hello
日志内容

 7、格式符含义(转换模式(ConversionPattern)):

%d:打印日志的时间,精确到毫秒【2014-06-10 14:38:11,112】

%n:回车;

%m:日志内容;

%c:你在程序中使用【log4net.ILog log = log4net.LogManager.GetLogger("My1stLogger");】创建的日志的名字My1stLogger;

%p:日志级别或者叫信息类型(Fatal--Debug--Info--......);

%F:所在类或者叫所在文件名,比如【D:\TestForm\Form1.cs】

%L:打印日志的语句所在文件中的行号。

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

---------------------

 

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

 

%n(new line):换行

 

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

 

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

 

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

 

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

 

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

 

       模式字符串为:%-10c -%m%n

 

       代码为:

 

ILog log=LogManager.GetLogger(“Exam.Log”);

 

log.Debug(“Hello”);

 

    则输出为下面的形式:

 

Exam.Log       - Hello

 

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

 

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

 

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

 

例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

 

176 [main] INFO  org.foo.Bar - Located nearest gas station.

 

---------------------

2、RollingFileAppender

 

TestForm2演示程序的配置文件:

注意:对于Header和Footer,程序每重新启动一次,会产生新的header和footer。

 

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, 
            log4net-net-1.0"/>
  </configSections>
  <log4net>
    <!--使用Rolling方式记录日志按照日来记录日志-->
    <appender name="RunLog" type="log4net.Appender.RollingFileAppender">
      <!--文件名,可以相对路径,也可以绝对路径,这里只给定了文件夹-->
      <file value="log\\runtime\\"/>
      <!--最小锁定模型以允许多个进程可以写入同一个文件,解决文件独占问题-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <!--是否增加文件-->
      <appendToFile value="true"/>
      <!--日志追加类型,Date为按日期增加文件,Size为按大小-->
      <rollingStyle value="Date"/>
      <!--文件命名格式,非日期参数化要进行转义,如自定义文件后缀-->
      <datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;"/>
      <!--是否固定文件名-->
      <staticLogFileName value="false"/>
      <!--内容布局-->
      <layout type="log4net.Layout.PatternLayout">
        <!--头部-->
        <header value="----------------------header--------------------------
"/>
        <!--结尾-->
        <footer value="----------------------footer--------------------------
"/>
        <!--输出格式化-->
        <conversionPattern value="当前时间:%d [%p] %m %n"/>
      </layout>
      <!--过滤器-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <!--只接受最小等级与最大等级之间的日志输出,这里只接受INFO级别的输出-->
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
      </filter>
    </appender>

    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
      <file value="log\\error\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyy-MM-dd&quot;.log&quot;"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <header value="----------------------header--------------------------
"/>
        <footer value="----------------------footer--------------------------
"/>
        <conversionPattern value="当前时间:%d 错误类型:[%p]  信息:%m  所在类:%F 所在行:%L %n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <!--只接受最小等级与最大等级之间的日志输出,其他的被过滤,这里接受WARN(警告),ERROR(错误),FATAL(致命)级别的输出-->
        <param name="LevelMin" value="WARN"/>
        <param name="LevelMax" value="FATAL"/>
      </filter>
    </appender>

    <!--定义日志的输出媒介-->
    <root>
      <!--RollingFileAppender事件日志-->
      <appender-ref ref="RunLog"/>
      <appender-ref ref="ErrorLog"/>
    </root>

  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>
TestForm2的配置文件

 

posted on 2014-06-10 14:21  冠冕堂皇  阅读(226)  评论(0编辑  收藏  举报