zoukankan      html  css  js  c++  java
  • C# log4net使用

    1       log4net日志文件的使用

    步骤

    内容

    1

    下载、安装、及引用log4net.dll。

    可通过NuGet搜索安装完成。

    2

    添加配置文件。--建议公司定义自己的日志格式,在项目中循环使用。

    日志文件内容的配置说明》。

    3

    添加日志配置文件使用的说明。

    日志配置文件的使用说明》。

    4

    建议的一般使用方式。

    1.1      下载或者直接通过nuget 安装log4net.dll

    安装后,log4net.dll将被直接引用至项目。

     

    1.2      设置日志的配置文件

    可以在项目原有的App.config中增加配置,也可增加一个配置文件。

    1.2.1       增加新的配置文件

    要点说明:

    •   log4net日志的控制优先级

    从高到底依次为: OFF > FATAL > ERROR > WARN > DEBUG > INFO > ALL

    •   log4net日志的常见输出格式

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    %n(new line):換行
    %d(datetime):输出当前语句运行的时刻
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    %t(thread id):当前语句所在的线程ID
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
    %c(class):当前日志对象的名称
    %L:输出语句所在的行号
    %F:输出语句所在的文件名
    %-数字:表示该项的最小长度,如果不够,则用空格填充

    • 一个logger需要有一个对应的appender。appender中可以配置日志的格式、追加日志的方式、日志文件的大小、保留几个日志文件、按照大小创建还是按照日期创建等等。

    日志文件内容的配置文件》

    格式1

    —引用自:https://www.cnblogs.com/kliine/p/10950859.html

    <?xml version="1.0" encoding="utf-8"?>

    <configuration>

      <!-- Level的级别,由高到低 -->

      <!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->

      <!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->

      <log4net>

        <!--错误日志类-->

        <logger name="logerror">

          <!--日志类的名字-->

          <level value="ALL" />

          <!--定义记录的日志级别-->

          <appender-ref ref="ErrorAppender" />

          <!--记录到哪个介质中去-->

        </logger>

        <!--信息日志类-->

        <logger name="loginfo">

          <level value="ALL" />

          <appender-ref ref="InfoAppender" />

        </logger>

        <!--错误日志附加介质-->

        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"><!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->

          <param name="File" value="Log\LogError\" /><!--日志输出到exe程序这个相对目录下-->

          <param name="AppendToFile" value="true" /><!--输出的日志不会覆盖以前的信息-->

          <param name="MaxSizeRollBackups" value="100" /><!--备份文件的个数-->

          <param name="MaxFileSize" value="10240" /><!--当个日志文件的最大大小-->

          <param name="StaticLogFileName" value="false" /><!--是否使用静态文件名-->

          <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" /><!--日志文件名-->

          <param name="RollingStyle" value="Date" /><!--文件创建的方式,这里是以Date方式创建-->

          <!--错误日志布局-->

          <layout type="log4net.Layout.PatternLayout">

            <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />

          </layout>

        </appender>

        <!--信息日志附加介质-->

        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">

          <param name="File" value="Log\LogInfo\" />

          <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&quot;.htm&quot;"  />

          <param name="RollingStyle" value="Date" />

          <!--信息日志布局-->

          <layout type="log4net.Layout.PatternLayout">

            <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />

          </layout>

        </appender>

      </log4net>

    </configuration>

    格式2

    <?xml version="1.0" encoding="utf-8"?>

    <configuration>

    <log4net>

    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">

          <param name="File" value=" Log\LogError\error.log" />

          <param name="AppendToFile" value="true" />

          <param name="MaxSizeRollBackups" value="10" />

          <!--param name="RollingStyle" value="Date" /-->

          <param name="RollingStyle" value="Size" />

          <param name="MaxFileSize" value="10000000" />

          <param name="StaticLogFileName" value="true" />

          <layout type="log4net.Layout.PatternLayout">

            <conversionPattern value="%d [%t] %-5p - %m%n" />

          </layout>

    </appender>

    <logger name="LeanOn.MES" additivity="False">

          <level value="DEBUG" />

          <appender-ref ref="FileAppender" />

        </logger>

      </log4net>

    </configuration>

    1.3      日志配置文件的配置说明

    一定要在Properties中的AssemblyInfo.cs中添加一行。

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    说明1: 关于configfile属性

    用于制定配置文件的名称和路径。如果无该属性,默认需要在该项目.exe的同一目录下。

    如果是创建的配置文件,修改文件的属性如下,这样文件会从配置的目录复制到.exe的目录下。

    说明2:关于watch属性

    Watch=true: 表示在程序运行的过程中会一直监控log4net.config文件的配置。如果文件中的配置发生变化会立刻生效。

    Watch=false:仅在程序启动的时候读取配置文件。

    *建议设置为true. 这样在程序运行的过程中,随时修改配置文件中的日志等级,可屏蔽低等级的日志。比如原来日志的等级设置为debug,那么程序中日志对象的写入方法优先级>=debug的日志等级都会记录到文件中。而修改为Fatal,则仅记录优先级>=Fatal的日志。

    1.4      使用log4net

    编写一个LogHelper类,然后在需要使用日志的地方调用该LogHelper.WriteLog()方法即可。

    public class LogHelper

            {

                    private const string LogMESIdent = "LeanOn.MES";//这里的 loginfo 和 log4net.config 里的名字要一样

                   

                    public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger(LogMESIdent);

                    public static void WriteLog(string info, Exception ex)

                    {

                            if (logerror.IsErrorEnabled)

                            {

                                    logerror.Error(info, ex);

                            }

                    }

            }

  • 相关阅读:
    洛谷 P2922 [USACO08DEC]秘密消息Secret Message
    HDU 1542 Atlantis
    洛谷 P2146 软件包管理器
    rabbitmq
    POJ——T2446 Chessboard
    洛谷—— P3375 【模板】KMP字符串匹配
    洛谷——P3370 【模板】字符串哈希
    POJ——T1860 Currency Exchange
    洛谷—— P3386 【模板】二分图匹配
    python(1)- 初识python
  • 原文地址:https://www.cnblogs.com/haokangqi/p/13399533.html
Copyright © 2011-2022 走看看