c# 在window项目使用log4net记录日志
c# log4net在window项目中使用实例
1、首先,去官网下载log4net.dll工具 链接http://logging.apache.org/log4net/download_log4net.cgi
2、下载之后,目录log4net-2.0.8-bin-newkey\log4net-2.0.8\bin\net\4.0\release 里面的log4net.dll就是我们要引用的dll了。
新建一个winform程序,添加引用
3、写配置文件,可以在app.config文件里面添加,也可以另外写一个log4net.config文件。
a.之后再在app.config文件中添加Log4net的配置条目,在…中添加下面的条目,要将…放在下面,如果没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net-net-1.0"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender"/>
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="my_log-file.txt"/>
<param name="AppendToFile" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n"/>
<!--conversionPattern value="%newline%date [%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"-->
</layout>
</appender>
</log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
b.(推荐使用,以下说明是使用这种方法)
新建log4net.config文件,把log4net的配置文件从App.config里面抽离出来。同时把log4net.config复制到输出目录。因为log4net框架会在相对于AppDomain.CurrentDomain.BaseDirectory 属性定义的目录路径下查找配置文件。框架在配置文件里要查找的唯一标识是标签。
记得:如果是web程序要将log4net.config放到根目录下面,如果是winform要将log4net.config放到启动目录下面。
其中,为路劲,为文件名,“表示单引号可以替换成"yyyyMMdd’.htm’”
<log4net>
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaxFileSize" value="10240" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="10240" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
3、在AssemblyInfo.cs中添加
[assembly: log4net.Config.XmlConfigurator( ConfigFile="log4net.config", ConfigFileExtension = "config", Watch = true)]
注意:如果在App.config里面写的log4net配置文件,Log4Net自动帮我们选择使用app.config文件了,就不需要在AssemblyInfo.cs文件中添加指定使用哪个配置文件了。
注意watch=true是必须的,否则程序就不会对这个进行监听,换个意思,这里可以做开关日志记录的操作,即watch=false表示不使用log4net记录日志。不必去注释代码。
4、在代码中使用Log4Net
封装一个类LogHelper,里面的两个logger类,分别对应在
Log4Net.config中的两个Logger。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Common
{
public class LogHelper
{
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
public static void WriteLog(string info)
{
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
}
}
public static void WriteLog(string info, Exception se)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, se);
}
}
}
}
建立一个winform程序,添加一个按钮,在按钮中写入如下的点击事件。
5、运行程序后,大家应该能够在…\bin\Debug文件夹中看到生成的日志文件