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开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/wml-it/p/14818006.html
Copyright © 2011-2022 走看看