跨越网络工作室

跨越网络工作室专注于网站建设、游戏软件和行业软件开发,目标就是为客户提供最好的服务.qq:1578065783
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

asp.net + winform + log4net 使用示例

Posted on 2011-05-03 17:00  跨越网络工作室  阅读(412)  评论(0)    收藏  举报

  asp.net + winform + log4net 使用示例 收藏
log4net, 是 apache.org 在 log4j的基础上推出的针对.NET程序的开源的日志组件。

log4net目前的最新版本是 1.2.10,log4net支持的日志保存方式,可谓丰富之极,包括:

存入SQL SERVER 数据库
存入ACCESS数据库
存入ORACLE数据库
存入DB2数据库
存入SQLLite数据库
生成asp.net 的trace模式的日志
缓存方式的日志
直接输出到控制台屏幕(支持彩色)
存入系统日志
生成单文件日志
生成多文件日志
保存在内存中
利用net send 发送给指定的网络域或主机
远程生成日志
利用SMTP发送日志到指定的邮箱
利用IIS的SMTP,将日志放入MAIL目录
利用UDP协议发送日志
上面的,各种日志保存方式的具体配置细节, 在这里

log4net的日志记录分为7级,从高到低为: OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL

要使用log4net,必须给log4net指定好配置文件, 有两种方法:

放入 web.config 或 app.config
放入一个单独的配置文件,如: log4net.config (推荐)
log4net的配置格式,大致如下:

<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="log.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value=".yyyyMMdd" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="1MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%date %-5level %logger -%m%n" />
  </layout>
    </appender>
    <root>
        <level value="WARN" />
        <appender-ref ref="RollingLogFileAppender" />
    </root>
</log4net>上面给出的是一个独立的log4net的配置文件,大体解释一下:

<log4net></log4net>是根,<root></root>是必须的,是所有日志格式的根,其中定义了,日志记录的基础级别,和当前启用的日志记录方式, 上面的 appender 将继承root的level

appender中的 type 指明了,采用哪种方式来记录日志,具体取值,大家去 这里 查看

layout是日志输出格式的定义:

%d, %date :表示当然的时间

%level : 表示日志的级别

%logger, %c:表示日志产生的主题,通常是所在的类名,便于定位问题

%t, %thread: 表示 所在进程

%L:   表示产生日志的代码所在的行数

%m, %message :表示日志的具体内容

%n, %newline: 换行

————————————————————————–

我上面的是一个多文件日志的配置, 每天产生一个日志文件,日志名字是 log.txt.20081228 的形式

下面重点说一下使用的具体步骤:

1.  加入 log4net.dll 的引用

2. 对于 web application 和 winform

在 AssemblyInfo.cs 中,加入

[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]
//log4net.config 是配置文件的名称,可以自行设置
//Watch 是表示在程序运行期间是否监视该配置文件的变动3. 对于 website 项目,需要在 global.asax.cs 里,加入

protected void Application_Start(Object sender, EventArgs e)
{
    //配置log4net
    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
}4. 实际调用

    class Program
    {
        private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        //System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
        //是利用反射获取当前类的type,记录在日志中,便于定位日志发生的所在

        static void Main(string[] args)
        {
            log.Error("这是一个错误日志");
            log.Fatal("这是一个致命的错误日志");
            log.Warn("这是一条警告日志");
            log.Info("这是一条普通信息");
            Console.Read();
        }
    }下面附上一张生成的日志内容的截图:

事例完整代码下载

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fcsh820/archive/2009/02/23/3930418.aspx