看来周公的Log4Net介绍,深有感触,当项目发布之后遇到一些问题,无法定位无法调试解决起来困难很大。下面我在项目中的服务程序使用Log4Net的日志记录功能:
1. 下载Log4Net源码
2. 在项目中加入引用。
3.配置Config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="rollingFile" />
</root>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="D:/logs/" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
<param name="StaticLogFileName" value="true" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd.'log'" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value="
----------------------header--------------------------
" />
<param name="Footer" value="
----------------------footer--------------------------
" />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="WindowsApplication1.Form1">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
<appender-ref ref="coloredConsoleApp" />
<appender-ref ref="SystemEvent" />
</logger>
</log4net>
</configuration>
1.在WindowsApplication项目新增“应用程序配置文件”.
2.将一下内容Copy至“configuration”节点中
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="rollingFile" />
</root>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="WindowsApplication1.Form1">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
<appender-ref ref="coloredConsoleApp" />
<appender-ref ref="SystemEvent" />
</logger>
</log4net>
3.在AssemblyInfo.cs文件中添加一下代码
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
4.在Form1测试事件代码
log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log.Debug("debug");
log.Info("info");
log.Warn("warn");
log.Error("error");
MessageBox.Show("生成日志成功!");
5.差点忘了,添加对log4net.dll的引用。
6.运行程序,触发测试事件代码。在项目文件下bin\Debug目录下有个log.txt就是生成的日志文件,中间有记录的测试信息。
7。结束。(有空再来补充各项设置意义^_^,现在自己也不会)
这个只是在bin文件生成一个Log.txt文件。需要扩展的是 要在bin文件下生成一个log文件夹,然后再里面按照日期来生产log文件。(待续)
替换了这个部分<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" type="" value="log/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
就可以生成log文件夹,并在下面写日期文件名开头的vlog。
LogHelper
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using System.Reflection;
//需要加上:负责log4net无法工作
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace DataImportService
{
class LogHelper
{
/// <summary>
/// 输出日志内容
/// log.Debug("debug");
/// log.Info("info");
/// log.Warn("warn");
/// log.Error("error");
/// </summary>
/// <param name="message"></param>
/// <param name="methods"></param>
public void WriteLog(string message)
{
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log.Info(message);
}
}
}