Log4Net使用

来源:https://www.cnblogs.com/zhuhc/p/3447018.html

 

我们可根据不同情况,输出不同级别的日志。

将下载的对应版本的log4net.dll文件引入到工程中,然后再工程的AssemblyInfo.cs文件中添加

1 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]

上面的是单独文件的配置,如果我们将log4net的配置放入到app.config或者是web.config,则在AssemblyInfo.cs文件中添加配置时,不需要设置ConfigFile = "log4net.config", 如下:

1 [assembly: log4net.Config.XmlConfigurator()]

这个为log4net的初始化设置,当然我们也可以在代码中进行初始化,但是我比较喜欢在AssemblyInfo.cs文件中进行初始化。

如下面的代码,与上面的效果是一样的:

1 log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.Config"));

配置文件log4net.config:

A.XML

复制代码

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3   <log4net>
 4     <logger name="loginfo">
 5       <level value="INFO" />
 6       <appender-ref ref="LogCommon" />
 7     </logger>
 8     <appender name="LogCommon" type="log4net.Appender.RollingFileAppender">
 9       <param name="File" value="logs\"/>
10       <param name="AppendToFile" value="true"/>
11       <param name="maxSizeRollBackups" value="10"/>
12       <param name="maximumFileSize" value="1MB"/>
13       <param name="staticLogFileName" value="false"/>
14       <param name="DatePattern" value="yyyy-MM/yyyy-MM-dd&quot;.log&quot;" />
15       <param name="RollingStyle" value="Composite" />
16       <layout type="log4net.Layout.XmlLayout">
17         <param name="Header" value="&lt;?xml version=&quot;1.0&quot; ?&gt;&lt;logs&gt;" />
18         <param name="Footer" value="&lt;/logs&gt;" />
19       </layout>
20       <filter type="log4net.Filter.LevelRangeFilter">
21         <param name="LevelMin" value="INFO" />
22         <param name="LevelMax" value="RROR" />
23       </filter>
24     </appender>
25   </log4net>
26 </configuration>

复制代码

以上是将日志存储到xml中的配置文件,根据官网的提示,添加了Header和Footer。因为默认的为xmlNode,当使用XMLDocument访问的时候,会提示不是有效的xml文件。

当然如果这种生成xml的方式还是不能满足工作需要的话,可以访问http://blogs.lessthandot.com/index.php/DesktopDev/MSTech/making-an-xmllayout-for-log4net

有大能自定义了XMLLayout,但是代码是VB的,可参照或者扩展。

  参数说明:

   type="log4net.Appender.RollingFileAppender",log4net提供了各种可实现不同功能的Appender,具体可参考官方提供的帮助文档http://logging.apache.org/log4net/release/sdk/log4net.Appender.html,或者:@Anders Cui 翻译的 log4net的各种Appender配置示例

或者原文:http://logging.apache.org/log4net/release/config-examples.html

B.文本

如果想输出到文本,则将配置文件中的Layout的Type属性修改成:log4net.Layout.PatternLayout

1 <layout type="log4net.Layout.PatternLayout">
2         <param name="Header" value="[Header]\r\n"/>
3         <param name="Footer" value="[Footer]\r\n"/>
4         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x]  - %m%n" />
5 </layout>

  参数说明

    Layout用法可参考:http://www.cnblogs.com/manhoo/archive/2009/06/25/1511066.html

    %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

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

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

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

C.数据库(SQLServer 2008)

复制代码

 1 <?xml version="1.0"?>
 2 <configuration>
 3   <log4net>
 4     <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
 5       <bufferSize value="1" />
 6       <useTransactions value="false" />
 7       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 8       <connectionString value="Data Source=192.168.1.99\SQLSERVER;Initial Catalog=RailWeightDB;User ID=sa; PWD=*******;" />
 9       <commandText value="INSERT INTO [RailWeightDB].[dbo].[SysLog]([ThreadName],[LevelName],[Message],[Exception],[CreateTime],[CreaterID]) VALUES (@thread,@level,@message,@exception,@time,@user)" />
10       <parameter>
11         <parameterName value="@thread" />
12         <dbType value="String" />
13         <size value="100" />
14         <layout type="log4net.Layout.PatternLayout">
15           <conversionPattern value="%t" />
16         </layout>
17       </parameter>
18       <parameter>
19         <parameterName value="@level" />
20         <dbType value="String" />
21         <size value="50" />
22         <layout type="log4net.Layout.PatternLayout">
23           <conversionPattern value="%p" />
24         </layout>
25       </parameter>
26       <parameter>
27         <parameterName value="@message" />
28         <dbType value="String" />
29         <size value="5000" />
30         <layout type="log4net.Layout.PatternLayout">
31           <conversionPattern value="%m" />
32         </layout>
33       </parameter>
34       <parameter>
35         <parameterName value="@exception" />
36         <dbType value="String" />
37         <size value="5000" />
38         <layout type="log4net.Layout.ExceptionLayout" />
39       </parameter>
40       <parameter>
41         <parameterName value="@time" />
42         <dbType value="DateTime" />
43         <layout type="log4net.Layout.RawTimeStampLayout" />
44       </parameter>
45       <parameter>
46         <parameterName value="@user" />
47         <dbType value="String" />
48         <size value="50" />
49         <layout type="log4net.Layout.PatternLayout">
50           <conversionPattern value="%X{user}" />
51         </layout>
52       </parameter>
53     </appender>
54     <!-- specify the level for some specific categories -->
55     <logger name="SysLog">
56       <level value="DEBUG"/>
57       <appender-ref ref="ADONetAppender"/>
58     </logger>
59   </log4net>
60 </configuration>

复制代码

在配置数据库过程中遇到过好多麻烦,当然,过程是痛苦的,结果是美好的。

  参数说明

    bufferSize:一般设置为1,如果设置为10,则,我们写10次log才会被写入一次,这种可能会造成延迟更新,也就是说我10:10操作的日志,到10:15,buffer满了,此时才会写入到数据库中,如果协同交互较多,并且需要频繁写日志,则可根据实际情况,将其设置为较大的值。

    useTransactions :是否使用存储过程,bool类型。

    connectionType:其中Version,我看到过2.0,也看到过1.3,好像官网的就是1.3,然后我查了这个,据非官方说明,这个是.netframework的版本。

    %X{user}:%X代表的是MDC,如果不明白这个才是是怎么来的,可参考下面的注意事项以及Layout参数说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值