C# log4net 配置
log4net由来
- log4net库是Apache log4j框架在Microsoft
.NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。 [1] - log4net是Apache软件基金会Apache Logging Services工程的一部分。Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务。
建议写日志直接使用log4net ,解决了多并发的问题。
log4net 配置
- 首先下载一个log4net,在解决方案中引用类库文件。
- 添加一个XML文件,在XML文件中配置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Level的级别,由高到低 -->
<!-- None > Fatal > ERROR > WARN > DEBUG > INFO > ALL-->
<!-- 解释:如果level是ERROR,则在cs文件里面调用log4net的info()方法,则不会写入到日志文件中-->
<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">
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<param name="File" value="Log\\LogError\\" />
<!--日志输出到exe程序这个相对目录下-->
<param name="AppendToFile" value="true" />
<!--输出的日志不会覆盖以前的信息-->
<param name="MaxSizeRollBackups" value="100" />
<!--备份文件的个数-->
<param name="MaxFileSize" value="10240" />
<!--当个日志文件的最大大小-->
<param name="StaticLogFileName" value="false" />
<!--是否使用静态文件名-->
<param name="DatePattern" value="yyyy-MM-dd.log" />
<!--日志文件名-->
<param name="RollingStyle" value="Date" />
<!--文件创建的方式,这里是以Date方式创建-->
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n" />
</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" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="100" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--这是按日期产生文件夹,并在文件名前也加上日期-->
<param name="DatePattern" value="yyyy-MM-dd".log"" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n消息描述:%c [%x] %n%m %n " />
</layout>
</appender>
</log4net>
</configuration>
log4net 在C# 中如何应用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//log4net从配置文件中读取配置
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
namespace WindowsService1.Tool
{
public class LogHelper
{
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("LogInfo");//初始化log4net
/// <summary>
/// 写入正确的log
/// </summary>
/// <param name="log"></param>
public static void WriteLog(string log)
{
logger.Info(log);
}
/// <summary>
/// 报错时要写的log
/// </summary>
/// <param name="log"></param>
public static void WriteError(string log)
{
logger.Error(log);
}
/// <summary>
/// 预警时写的log
/// </summary>
/// <param name="log"></param>
public static void WriteWarn(string log)
{
logger.Warn(log);
}
/// <summary>
/// debug时写的log
/// </summary>
/// <param name="log"></param>
public static void WriteDebug(string log)
{
logger.Debug(log);
}
}
}
注意事项
使用log4net 必须在管理员的权限下执行。