在此之前写的程序需要打印或输出日志都是自己写代码,写的有点累。
其实之前也考虑过使用3rd party的library/tools但一直没有动手实践。
这次试用了一下log4net,结果发现真的很好用。
首先在http://logging.apache.org/log4net/下载log4net
下面的截图是1.2.13版本,我选择的是Binaries目录下log4net newkey版
下载完了解压,在bin/net目录下有如下文件夹
文件夹名字对应平台版本,例如4.0表示选择.NET4.0的
你也可以选择其他版本,或者下载源码自己按需求编译
现在就以4.0版本为例,将文件夹下的*.dll文件拷出来
接下来以C#项目为例来说明log4net的使用
新建一个C#的WinForm项目(注意设置,选择平台为.NET4.0,如果选错了,之后也可以在项目属性里面修改)
添加log4net引用(【添加引用】-->【浏览】刚才拷出来的log4net.dll文件)
在主窗体上添加一个按钮并添加Click事件响应
你的代码可能会是这样子(者利用到了LogHelper类,详见后文)
private void btnLogTest_Click(object sender, EventArgs e)
{
LogHelper.WriteLog(typeof(MainForm), "Test logger");
}
【项目(右键)】-->【添加】-->【添加新建项】-->【应用程序配置文件】
然后根据需要编辑app.config的内容
一个示例如下(将日志输出的文件中)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!--定义输出到文件中-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--定义文件存放位置-->
<file value="log\\"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<param name="MaxSizeRollBackups" value="100"/>
<layout type="log4net.Layout.PatternLayout">
<!--每条日志末尾的文字说明-->
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="记录时间:%date%n线程编号:[%thread]%n日志级别:%-5level %n
日志来源:%logger%n日志属性:[%property{NDC}]%n日志详情:%message%n%newline"/>
</layout>
</appender>
<root>
<level value="ERROR"/>
<!--文件形式记录日志-->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
</configuration>
一个示例如下(【项目】-->【添加新建项】-->【添加Class】然后完善代码)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace LogForNET
{
public class LogHelper
{
public static void WriteLog(Type ty, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(ty);
log.Error("Error", ex);
}
public static void WriteLog(Type ty, string msg)
{
log4net.ILog log = log4net.LogManager.GetLogger(ty);
log.Error(msg);
}
}
}
本文原创,部分内容参考了以下两篇博文
http://www.cnblogs.com/wangsaiming/archive/2013/01/11/2856253.html
和
http://blog.youkuaiyun.com/zhoufoxcn/article/details/2220533
博文原始地址
http://blog.youkuaiyun.com/fengyhack/article/details/40073819