zoukankan      html  css  js  c++  java
  • Log4Net使用

    1.下载文件

    下载地址:http://logging.apache.org/log4net/,有源码和dll文件可供下载,有能力的大神可以研究研究源码。

    解压之后log4net-1.2.13\bin文件夹下面会有四个文件夹,cli,mono,net,net-cp,前连个不知道是在什么情况下用的,后两个主要是针对不同的.net编译程序,每个程序或者是类库都有一个目标框架属性,可右键项目,点击属性查看,.NET Framework 4 对应net,.NET Framework 4 Client Profile 对应 net-cp。

    .NET Framework 4 Client Profile 是 .NET Framework 4 已针对客户端应用程序进行优化的一个子集。 它提供了适用于大多数客户端应用程序的功能,包括 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF) 和 ClickOnce 功能。 这使得以 .NET Framework 4 Client Profile 为目标的应用程序的部署速度加快且安装包变小。

    2.配置

    log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局).

    日志级别

    级别

    允许的方法

    Boolean属性

    优先级别

    OFF

     

     

    Highest

    FATAL

    void Fatal(...);

    bool IsFatalEnabled;

     

    RROR

    void Error(...);

    bool IsErrorEnabled;

     

    WARN

    void Warn(...);

    bool IsWarnEnabled;

     

    INFO

    void Info(...);

    bool IsInfoEnabled;

     

    DEBUG

    void Debug(...);

    bool IsDebugEnabled;

     

    ALL

     

     

    Lowest

     

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

    将下载的对应版本的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参数说明

        有大能总结了在使用数据库的4个注意事项,可参考一下:http://weblogs.asp.net/drnetjes/archive/2005/02/16/374780.aspx

  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/zhuhc/p/3447018.html
Copyright © 2011-2022 走看看