也用 Log4Net 之将自定义属性记录到文件中 (三)

 

也用 Log4Net  之将自定义属性记录到文件中 (三)

 

  即解决了将自定义属性记录到数据库之后。一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑到了数据库记录方式,当然也一定考虑到了其它的记录方式。but how,how,how(这句话来源于电影功夫熊猫)。接下来让我们看看如何将自定义属性记录到文件中。

 

  上菜之前我先做个小补充,首先我们用到的消息载体依然是LogMessage,LogMessage类的代码可以查看"也用 Log4Net  之将日志记录到数据库的配置 (一)"。自定义属性的名称依然是UserID,当然,你可以输出更多自定义属性,自已加就成了。对应该的后台代码依然是我的上一篇文章 "也用 Log4Net 之将日志记录到数据库的后台实现 (二)"。是不是很好,同样的代码可以支持多种日志输出方式,这便是Log4Net的优势之一。

 

  好了,上菜:

 

    <logger name="MisTxtLogger">
      <level value="ALL"/>
      <appender-ref ref="MisTxtFile" />
    </logger>

 

    <!--Txt记录形式-->
    <!--信息日志配置-->
    <appender name="MisTxtFile" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="D:\\MisLog\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="RollingStyle" value="Date" />
      
      <!--自定义成员 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />

        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID"  />
        </layout>

      </parameter>
      

<layout type="JJ.Data.LogCommon.CustomLayout"> <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" /> </layout>
</appender>

  

 

  在后台代码中:把加载的配置节点名称改成"MisTxtLogger",就可以应用文本输出的配置了。

 

    _log = log4net.LogManager.GetLogger("MisTxtLogger"); 

  

  这就是文件记录形式的配置,你记得把他放到配置文件中的 <log4net></log4net>中就可以了。重点来看以下配置,是从上面的配置中截出来的,为了说明方便。

 

      <!--自定义成员 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />

        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID"  />
        </layout>

      </parameter>
      
      <layout type="JJ.Data.LogCommon.CustomLayout">
         <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" />
      </layout>

  

 

  在文本记录形式中,依然要先对自定义属性进行处理,看代码中的“UserID”就是本例中的自定义属性,然后再看它的输入方式:

 

     <layout type="JJ.Data.LogCommon.CustomLayout">
        <param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c %n%m %n消息描述:%UserID%n" />
     </layout>

  

 

  消息描述:%UserID,在Log4Net中,%UserID所代表的就是自定义属性的值,当然,%n是换行,%m就等同于%message,即消息内容,其它的%元素 我就不一一讲将解了。可以在网上找到详细资料。

好了,按照上面的配置,现在自定义属性也可以输出到文件中了,是不是很简单。

 

   重点强讲一下:配置的时候一定要小心,因为很多时候日志无法正常输出的原因不是因为代码的问题,而往往是因为配置中的小错误导致的,所以我一直认为Log4Net配置是件可怕的事,一不小心配错了,就无法正常记录日志了。不过它的配置还算是很清晰易懂的。大家刚开始看不懂的时候千万别急。资料看一下,Layout , appendar 等等配置节的含义,然后再去阅读Log4Net的配置文件,你会有种豁然开朗的感觉。

 

   好了,就写的这里,我是百灵。

 

 

posted @ 2012-09-05 14:27  jerry-Tom  阅读(4805)  评论(9编辑  收藏  举报