zoukankan      html  css  js  c++  java
  • Log4.net Helper工具类

    Log4.net Helper工具类

    一、Config文件配置

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>
      </configSections>
      <!-- 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="D:Winform控制台log4netDemo2inLogLogError\" />
          <!--日志输出到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="Header" value="&lt;BR&gt;&#xA;--------------------------------------------header------------------------------------------------&#xA;"/>
            <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;"  />
            <param name="Footer" value="&lt;BR&gt;&#xA;--------------------------------------------footer------------------------------------------------&#xA;"/>
          </layout>
        </appender>
        
        <!--信息日志附加介质-->
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="D:Winform控制台log4netDemo2inLogLogInfo\" />
          <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">
            <!--这3行表示日志输出的格式,若不喜欢这样的样式,可以查看下面的输出样式,自行修改-->
            <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>-->
            <param name="Header" value="&lt;BR&gt;&#xA;--------------------------------------------header------------------------------------------------&#xA;"/>
            <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;"  />
            <param name="Footer" value="&lt;BR&gt;&#xA;--------------------------------------------footer------------------------------------------------&#xA;"/>
          </layout>
        </appender>
        
        <!--如下定义的其他输入方式-->
        <!--定义输出到控制台命令行中-->
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          </layout>
        </appender>
    
    
        <!--定义输出到windows事件中-->
        <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          </layout>
        </appender>
    
        <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb-->
        <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
          <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
          <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
          <!--定义各个参数-->
          <parameter>
            <parameterName value="@logDate" />
            <dbType value="String" />
            <size value="240" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%date" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="240" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%thread" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@logLevel" />
            <dbType value="String" />
            <size value="240" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%level" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="240" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%logger" />
            </layout>
          </parameter>
          <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="240" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%message" />
            </layout>
          </parameter>
        </appender>
    
        <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
        <root>
          <!--文件形式记录日志-->
          <appender-ref ref="LogFileAppender" />
          <!--控制台控制显示日志-->
          <!--<appender-ref ref="ConsoleAppender" />-->
          <!--Windows事件日志-->
          <!--<appender-ref ref="EventLogAppender" />-->
          <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉
                    <appender-ref ref="AdoNetAppender_Access" />
          -->
        </root>
      </log4net>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>

    二、LogHelper工具类代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace log4netDemo2
    {
        public class LogHelper
        {
            public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");//这里的 loginfo 和 log4net.config 里的名字要一样
            public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");//这里的 logerror 和 log4net.config 里的名字要一样
    
            //INFO
            public static void WriteLog(string info)
            {
                if (loginfo.IsInfoEnabled)
                {
                    loginfo.Info(info);
                }
            }
    
            //ERROR
            public static void WriteLog(string info, Exception ex)
            {
                if (logerror.IsErrorEnabled)
                {
                    logerror.Error(info, ex);
                }
            }
        }
    }

    三、测试代码

    using log4net;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace log4netDemo2
    {
        class Program
        {
         
            static void Main(string[] args)
            {
                try
                {
                    string a = "FF";
                    LogHelper.WriteLog(a);
                    int b = Convert.ToInt32(a);           
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(ex.Message.ToString(), ex);
                }
            }
        }
    }

    四、测试输出

    loginfo

      logerror


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    Java的注释
    输入一个字符串并判断是否是对称字符串
    将数组的数据按照指定格式进行拼接并打印
    对输入的电话号码中间4位进行屏蔽
    统计输入的大小写字母个数
    svnadmin
    jenkins
    travis-ci
    metamodel
    KISSY
  • 原文地址:https://www.cnblogs.com/wml-it/p/14818006.html
Copyright © 2011-2022 走看看