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