概览
Log4Net是Apache Log4J框架在.NET平台上的实现,它是一个帮助开发者将日志信息以多种方式(数据库、控制台、文件等)输出的开源工具。
为什么要使用日志记录
- 提供应用程序运行时状态,供开发人员快速定位程序中的Bug
- 通过多种方式输出,例如将异常信息通过邮件发送给系统管理员,及时发现问题
- 代替某些注释
日志记录的缺点
- 降低系统性能
##快速入门
本节通过以下三个步骤,简单讲解Log4Net的使用方法:
开发环境:Microsoft Visual Studio Enterprise 2015
Log4Net安装
新建控制台应用程序Log4NetSample,工具栏选中Tools|NuGet Package Manager|Package Manager Console,输入Install-Package log4net,如下图所示,安装成功。
Log4Net配置
命名空间前添加XmlConfiguratorAttribute标记:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
注:也可以将标记添加至AssemblyInfo.cs,针对整个程序集生效
向app.config文件添加如下配置:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "D:Log"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= "10"/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:2017-07-25.log-->
<param name= "DatePattern" value= "yyyy-MM-dd".log""/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<!--日志文本格式-->
<layout type="log4net.Layout.PatternLayout">
<!--例:2017-07-25 10:56:15,506 [9] INFO Log4NetSample.Program 18 - 消息 -->
<!--%d 时间-->
<!--%t 线程-->
<!--%-5p 日志级别-->
<!--%c 出错类-->
<!--%L 出错行-->
<!--%m 日志信息-->
<!--%n 换行-->
<param name="ConversionPattern" value="%d [%t] %-5p %c %L - %m %n" />
</layout>
</appender>
<root>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<level value="all" />
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
Log4Net使用
向Program.cs文件的Main方法键入如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using log4net;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetSample
{
class Program
{
static void Main(string[] args)
{
var log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
log.Info("消息");
log.Warn("警告");
log.Error("异常");
log.Fatal("错误");
Console.ReadLine();
}
}
}
启动程序,如下图所示,D:Log目录下已经生成了log文件