zoukankan      html  css  js  c++  java
  • 项目中使用Log4net

    1.创建log表

    CREATE TABLE [dbo].[Log](
    	[ID] [int] IDENTITY(1,1) NOT NULL,
    	[Date] [datetime] NOT NULL,
    	[Thread] [varchar](255) NOT NULL,
    	[Level] [varchar](50) NOT NULL,
    	[Logger] [varchar](255) NOT NULL,
    	[Message] [varchar](4000) NOT NULL,
    	[Exception] [varchar](2000) NULL,
     CONSTRAINT [PK_Log_1] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    

    2.添加log4net的引用

    3. 对于 web application 和 winform

    在具体项目的 AssemblyInfo.cs 中(不要在封装的类库中framwork),加入

    [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.添加Log.config

    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指定好配置文件, 有两种方法:

    1. 放入 web.config 或 app.config
    2. 放入一个单独的配置文件,如: 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();
            }
        }

    下面附上一张生成的日志内容的截图

    事例完整代码下载

    参考 http://www.cnblogs.com/zhangyi85/archive/2008/04/30/1177075.html

  • 相关阅读:
    webpack配置模块的查找范围
    webpack中resolve用法
    C语言中的字符串
    bash通配符与特殊符号
    求两个字符串的最大公共子串
    linux内核编译
    数据库中使用索引来提高查询的速度
    数据库中的主键与外键
    Linux学习——命令3
    Linux学习——命令2
  • 原文地址:https://www.cnblogs.com/xinzhyu/p/2080598.html
Copyright © 2011-2022 走看看