log4net 在.net中的实际应用
简介
log4net是apache组织开发的日志组件, 可以从http://logging.apache.org/log4net/downloads.html下载log4net的源代码。同log4j一样(java下的日志记录组件)用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。是一个开源项目. 可以以插件的形式应用在你的系统中。程序员在使用ErrorLog做日志记录的时候完全不用关心log4net的工作方式,只需简单的调用即可。
一:在winForm下的应用
第一步:新增项目,添加log4net引用.
第二步:设置配置文件:
建立对应项目的xml配置文件,log4net.config (log4net.config文件放在bin目录下)。文件内容如下:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <configSections>
4 <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
5 </configSections>
6 <log4net>
7 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
8 <layout type="log4net.Layout.PatternLayout">
9 <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
10 </layout>
11 </appender>
12 <appender name="FileAppender" type="log4net.Appender.FileAppender">
13 <file value="c:/log-file.txt" />
14 <appendToFile value="true" />
15 <layout type="log4net.Layout.PatternLayout">
16 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
17 </layout>
18 </appender>
19 <root>
20 <level value="INFO" />
21 <appender-ref ref="ConsoleAppender" />
22 </root>
23 <logger name="test.logger">
24 <level value="ALL" />
25 <appender-ref ref="FileAppender" />
26 </logger>
27 </log4net>
28</configuration>
第三步:在程序中设置自动加载以及监视配置文件
在AssemblyInfo.cs中增加如下语句:
[assembly: log4net.Config.XmlConfigurator(Watch=true,ConfigFile="log4net.config")]
第四步:测试使用
在窗体中增加一个按钮,
并在该按钮的Click事件中增加如下代码:
private void trigLogger_Click(object sender, System.EventArgs e)
{
ILog log = LogManager.GetLogger("test.logger");
log.Info("Hello,World!");
}
二在asp.net 中应用
第一步:编辑web.config
先在web.config中的<configuration>节点下添加如下配置:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- Define some output appenders -->
<appender name="LogInfoFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\log4net_info.txt"/>
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Define some output appenders -->
<appender name="LogDebugFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\log4net_debg.txt"/>
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Define some output appenders -->
<appender name="LogErrorFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\log4net_eror.txt"/>
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Define some output appenders -->
<appender name="LogPerfFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\log4net_perf.txt"/>
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="5MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<root>
<level value="All"/>
</root>
<!-- Specify the level for some specific categories -->
<logger name="GmccAdc.Logging.Info">
<!-- <appender-ref ref="B" /> -->
<level value="ALL"/>
<appender-ref ref="LogInfoFileAppender"/>
</logger>
<logger name="GmccAdc.Logging.Debug">
<!-- <appender-ref ref="B" /> -->
<level value="ALL"/>
<appender-ref ref="LogDebugFileAppender"/>
</logger>
<logger name="GmccAdc.Logging.Error">
<!-- <appender-ref ref="B" /> -->
<level value="ALL"/>
<appender-ref ref="LogErrorFileAppender"/>
</logger>
<logger name="GmccAdc.Logging.Perf">
<!-- <appender-ref ref="B" /> -->
<level value="ALL"/>
<appender-ref ref="LogPerfFileAppender"/>
</logger>
</log4net>
第二步编辑Global.asax的Application_Start
添加如下代码:
log4net.Config.DOMConfigurator.Configure();
第三步 编写测试
在要使用日志的类中引用log4net.dll 进行测试,可以写个类,把Logger放在app_code下
public class Logger
{
// Fields
private static readonly ILog logdebug = LogManager.GetLogger("GmccAdc.Logging.Debug");
private static readonly ILog logerror = LogManager.GetLogger("GmccAdc.Logging.Error");
private static readonly ILog loginfo = LogManager.GetLogger("GmccAdc.Logging.Info");
private static readonly ILog logperf = LogManager.GetLogger("GmccAdc.Logging.Perf");
// Methods
public static ILog GetLogger(string loggerName)
{
return LogManager.GetLogger(loggerName);
}
public static void Log(string logmsg, string loggerName)
{
LogManager.GetLogger(loggerName).Info(logmsg);
}
public static void LogDebug(string debugInfo)
{
logdebug.Debug(debugInfo);
}
public static void LogError(string errorInfo)
{
logerror.Error(errorInfo);
}
public static void LogInfo(string info)
{
loginfo.Info(info);
}
public static void LogWarn(DateTime warnInfo)
{
logperf.Warn(warnInfo);
}
}
在要调用日志的地方
Logger.info("你的信息");