C#使用Log4Net

代码中使用:

using log4net;
using log4net.Config;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            InitLog4Net();

            var logger = LogManager.GetLogger(typeof(Program));

            ThreadPool.QueueUserWorkItem(s =>
            {

                while (true)
                {
                    logger.Debug("测试1");
                    logger.DebugFormat("测试2{0}", 1);
                    logger.Debug("测试3", new Exception("测试3"));
                    logger.Info("消息1");
                    logger.Info("消息2", new Exception("消息2"));
                    logger.Warn("警告1");
                    logger.Warn("警告2", new Exception("警告2"));
                    logger.Error("异常1");
                    logger.Error("异常2", new Exception("异常2"));
                    logger.Fatal("错误1");
                    logger.Fatal("错误2", new Exception("错误2"));
                    Thread.Sleep(500);
                }
            });

            Console.ReadLine();
        }

        public static void AddDebugLog(Type t, string msg, Exception exc = null)
        {
            var logger = LogManager.GetLogger(t);
            if (!logger.IsDebugEnabled)
                return;
            if (exc == null)
                logger.Debug(msg);
            else
                logger.Debug(msg, exc);
        }

        private static void InitLog4Net()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            XmlConfigurator.ConfigureAndWatch(logCfg);
        }
    }
}

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <!--本地循环记录日志配置-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--日志路径-->
      <param name= "File" value= ".\TestLog\"/>
      <!--是否是向文件中追加日志-->
      <param name= "AppendToFile" value= "true"/>
      <!--备份文件的最大文件数目-->
      <param name= "MaxSizeRollBackups" value= "-1"/>
      <!--每个日志文件最大大小,超过指定大小删除重新记录,只有在RollingStyle为Composite或者Size下才有效-->
      <param name="MaximumFileSize" value="10MB" />
      <!--日志文件名是否是固定不变的-->
      <param name= "StaticLogFileName" value= "false"/>
      <!--日志文件名格式为:2008-08-31.log-->
      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>
      <!--日志根据日期滚动-->
      <param name= "RollingStyle" value= "Composite"/>
      <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能定日志,官方说线程非完全-->
      <!--<lockingModelType type="log4net.Appender.FileAppender+MinimalLock"/>-->
      <!--使用UTF-8编码-->
      <Encoding value="UTF-8"/>
      <!--每条日志末尾的文字说明-->
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="Header" value="[Header]\r\n" />
        <param name="Footer" value="[Footer]\r\n"/>-->
        <!--输出格式
        %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:输出语句所在的文件名
        %-数字:表示该项的最小长度,如果不够,则用空格填充
          -->
        <param name="ConversionPattern" value="%d [%t] %-5p %c %l %rms%n%m %n" />
      </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ALL" />
        <levelMax value="FATAL" />
       </filter>
    </appender>

    <!-- 控制台前台显示日志 -->
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="ERROR" />
        <foreColor value="Red, HighIntensity" />
      </mapping>
      <mapping>
        <level value="Info" />
        <foreColor value="Green" />
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
      </layout>

      <!--输出日志类型level范围-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Debug" />
        <param name="LevelMax" value="Fatal" />
      </filter>
    </appender>

    <root>
      <!--输出文件日志level-->
      <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
      <!--FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)-->
      <level value="ALL" />
      <!--控制台配置-->
      <appender-ref ref="ColoredConsoleAppender"/>
      <!--本地输出配置-->
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
</configuration>

资源链接,其实可以不用下载,代码基本贴完了: https://download.csdn.net/download/henrymoore/9506927

除非注明,文章均由 Dotnet9 整理发布,欢迎转载。

转载请注明:
作者:Dotnet9
链接:https://dotnet9.com/3087.html
来源:Dotnet9
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

登录后才能评论