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);

                        }

                }

        }

posted @ 2020-07-29 20:46  hakangqi  阅读(343)  评论(0编辑  收藏  举报