日志工具log4net试用记录

在此之前写的程序需要打印或输出日志都是自己写代码,写的有点累。

其实之前也考虑过使用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>



为了方便,可以编写一个LogHelper类,这样就可以在别处通用

一个示例如下(【项目】-->【添加新建项】-->【添加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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值