最近开发的项目中需要添加日志处理,在C# 中最常用的日志处理框架是log4net 框架,在此总结一下
log4net 可以在控制台和asp.net上添加引用,但配置却不同,配置思路一样,
1)通过NuGet 添加log4net 的引用
2)添加log4net 配置文件,配置虽然可以放到app.config 或者web.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">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name= "File" value= "logs\"/>
<param name= "AppendToFile" value= "true"/>
<param name= "MaxSizeRollBackups" value= "10"/>
<param name= "StaticLogFileName" value= "false"/>
<param name= "DatePattern" value= "yyyy-MM-dd".log""/>
<param name= "RollingStyle" value= "Date"/>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Debug" />
<param name="LevelMax" value="Fatal" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%d] [%-5p] [%c] - %m%n" />
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="Error" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="Warn" />
<foreColor value="Yellow" />
</mapping>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Warn" />
<param name="LevelMax" value="Fatal" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
</layout>
</appender>
<root>
<level value="all" />
<appender-ref ref="ColoredConsoleAppender"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
3)自觉是最重要的一步,需要把log4net.config 文件放到可以找到的地方,也就是
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo("log4net.config"));
这里必须找到配置文件
4)写一个Log4netHelper.cs 类,代码如下
public class LogHelper
{
public static log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public LogHelper()
{
FileInfo fl = new System.IO.FileInfo("log4net.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(fl);
}
public void WriteInfo(string info)
{
try
{
logger.Info(info);
}
catch (Exception ex)
{
throw;
}
}
public void WriteError(string info, Exception ex)
{
logger.Error(info, ex);
}
}
5)调用
LogHelper log=new LogHelper();
log.WriteInfo("cs");
6) 测试,测试的文件夹最好写个绝对路径,否则找起来挺费劲