C#日志文件Log4net.dll的应用

一、什么是log4net?

二、引用log4net文件并把日志输出到日志文件里

   2.1 创建项目

2.2   从网上下载log4net.dll文件

 log4net.dll下载链接https://download.csdn.net/download/qq_40229737/12288639,我用的是VS2017

 log4net.dll版本用的2.0,找到创建的项目所在文件夹根目录创建引用文件夹, 把log4net.dll文件库放在引用文件夹里如下所示:

2.3  添加log4net.dll引用            

 

 

2.4  在AssemblyInfo.cs中添加一行代码,指定log4net从配置文件中读取相关配置

  代码内容:[assembly: log4net.Config.XmlConfigurator(Watch = true)]

2.5  在App.config中添加对应的节点

<!--重点configsections必须是第一个节点1og4net配置-->
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

2.6 在App.Config中添加Log4Net.dll初始化信息

 (主要一些按照什么格式存储,存储位置的配置)

 App.config中具体内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
  <log4net>
    <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志文件存放的地址"D:\App_Log\servicelog\"或者工程根目录"Log\\LogInfo\\"-->
      <param name= "File" value= "Log\\LogInfo\\"/>
      <!--输出的日志不会覆盖以前的信息-->
      <param name= "AppendToFile" value= "true"/>
      <!--备份文件的个数-->
      <param name= "MaxSizeRollBackups" value= "10"/>
      <!--是否使用静态文件名-->
      <param name= "StaticLogFileName" value= "false"/>
      <!--日志文件名-->
      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.read.log&quot;"/>
      <!--文件创建的方式,这里是以Date方式创建-->
      <param name= "RollingStyle" value= "Date"/>
      <!--日志格式、错误日志布局-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[%date]-[%thread]-[%-p]-[%logger]-[%M] -> %message%newline" />
        <!--conversionPattern:
            %m(message):输出的日志消息;                    %n(newline):换行;
            %L:输出语句所在的行号;                        %F:输出语句所在的文件名;
            %d(datetime):输出当前语句运行的时刻;           %p(priority): 日志的当前日志级别;
            %t(threadid):当前语句所在的线程ID ;            %c(class):当前日志对象的名称;         
            %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
            %-10:表示最小长度为10,如果不够,则用空格填充;-->
      </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>
    <root>
      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
          比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
          如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="all" />
      <appender-ref ref="ErrorAppender"/>
      <appender-ref ref="InfoAppender"/>
    </root>
  </log4net>
  
</configuration>

 2.6  写代码进行测试: 在需要输出日志的类中定义日志对象

 2.7  启动运行

结果:

发布了152 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40229737/article/details/105217840