代码中使用:
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".log""/>
<!--日志根据日期滚动-->
<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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。