.Net Core 实践 - 使用log4net记录日志(1)

原文:.Net Core 实践 - 使用log4net记录日志(1)

demo地址:https://github.com/PuzzledAlien/log4net_demo

准备

  • log4net 最新版本是2.0.8
  • VS2017
  • .Net Core 2.2
  • 测试电脑配置 windows10 64位 4核CPU 16G内存

log4net官网引导文档 :http://logging.apache.org/log4net/release/manual/introduction.html

配置和代码

log4net.config配置如下

lt;?xml version="1.0" encoding="utf-8" ?gt;
lt;configurationgt;
  lt;configSectionsgt;
    lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/gt;
  lt;/configSectionsgt;
  lt;log4netgt;
    lt;appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"gt;
      lt;!--日志路径--gt;
      lt;param name= "File" value= ".\App_Log\servicelog\"/gt;
      lt;!--是否是向文件中追加日志--gt;
      lt;param name= "AppendToFile" value= "true"/gt;
      lt;!--log保留天数--gt;
      lt;param name= "MaxSizeRollBackups" value= "10"/gt;
      lt;!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。--gt;
      lt;maximumFileSize value="2MB" /gt;
      lt;!--日志文件名是否是固定不变的--gt;
      lt;param name= "StaticLogFileName" value= "false"/gt;
      lt;!--日志文件名格式为:2008-08-31-12.log--gt;
      lt;param name= "DatePattern" value= "yyyy-MM-dd-HH-mmamp;quot;.read.logamp;quot;"/gt;
      lt;!--日志根据日期滚动--gt;
      lt;param name= "RollingStyle" value= "Date"/gt;
      lt;layout type="log4net.Layout.PatternLayout"gt;
        lt;param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" /gt;
      lt;/layoutgt;
      lt;lockingModel type="log4net.Appender.FileAppender+MinimalLock" /gt;
    lt;/appendergt;
    lt;!-- 控制台前台显示日志 --gt;
    lt;appender name="ManagedColoredConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender"gt;
      lt;mappinggt;
        lt;level value="ERROR" /gt;
        lt;foreColor value="Red" /gt;
      lt;/mappinggt;
      lt;mappinggt;
        lt;level value="Info" /gt;
        lt;foreColor value="Green" /gt;
      lt;/mappinggt;
      lt;mappinggt;
        lt;level value="DEBUG" /gt;
        lt;foreColor value="Blue" /gt;
      lt;/mappinggt;
      lt;mappinggt;
        lt;level value="WARN" /gt;
        lt;foreColor value="Yellow" /gt;
      lt;/mappinggt;
      lt;layout type="log4net.Layout.PatternLayout"gt;
        lt;conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" /gt;
      lt;/layoutgt;
      lt;filter type="log4net.Filter.LevelRangeFilter"gt;
        lt;param name="LevelMin" value="DEBUG" /gt;
        lt;param name="LevelMax" value="Fatal" /gt;
      lt;/filtergt;
    lt;/appendergt;
    lt;rootgt;
      lt;!--(高) OFF gt; FATAL gt; ERROR gt; WARN gt; INFO gt; DEBUG gt; ALL (低) --gt;
      lt;level value="ALL" /gt;
      lt;appender-ref ref="ManagedColoredConsoleAppender"/gt;
      lt;appender-ref ref="RollingLogFileAppender"/gt;
    lt;/rootgt;
  lt;/log4netgt;
lt;/configurationgt;

添加引用

using log4net;
using log4net.Config;
using log4net.Repository;

代码如下:

        private static ILoggerRepository _loggerRepository;
        static void Main(string[] args)
        {
            _loggerRepository = LogManager.CreateRepository("DotNetCoreConsole");
            XmlConfigurator.ConfigureAndWatch(_loggerRepository, new FileInfo("log4net.config"));
            var log = LogManager.GetLogger(_loggerRepository.Name, typeof(Program));

            const int numberOfCycles = 20000;

            var sw = Stopwatch.StartNew();
            for (var i = 0; i lt; numberOfCycles; i++)
            {
                log.InfoFormat("testNum: {0} ", i);
            }
            sw.Stop();

            Console.WriteLine();
            Console.WriteLine("Ellapsed: {0}, numPerSec: {1}", sw.ElapsedMilliseconds, numberOfCycles / (sw.ElapsedMilliseconds / (double)1000));

            Console.WriteLine("Hello World!");

            Console.ReadKey();
        }

执行结果:
本地写log文本日志和Console打印日志的时间14720毫秒 一秒钟写日志1359条

Ellapsed: 14720, numPerSec: 1358.69565217391
上一篇:数据结构系列(四)-队列


下一篇:ie8下上传文件返回提示变成下载框问题