zoukankan      html  css  js  c++  java
  • log4net配置

          log4net是一款第三方日志框架,引用log4net的dll,再配置些基本参数即可,帮助程序员把日志信息输出到各种不同的目标,常见的有文本、数据库、windows日志、邮件、内存缓冲区等目标

    在使用log4net之前必须要先把log4net.dll文件加到文件的根目录下面,再添加log4net.dll引用(注意log4net与.Net Framework的版本号)

    log4net配置文件:

    <?xml version="1.0"?>
    <configuration>
    <!--
    <system.web>
    <compilation debug="true" targetFramework="4.0" />
    </system.web>
    -->
    <configSections>
    <section name="log4net"
    type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>
    <!--站点日志配置部分-->
    <log4net>
    <root>
    <!--控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
    <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
    <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
    <level value="ALL"/>
    <appender-ref ref="ConsoleAppender"/>
    <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d [%t] - %m%n"/>
    </layout>
    </appender>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <!--日志文件路径-->
    <param name="File" value="D:项目相关文件KnowledgePointTestKnowledgePointTestLog"/>
    <!--多线程时采用最小锁-->
    <lockingModel type="log4net.Appender.FileAppender+MinimaILock"/>
    <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
    <datePattern value="yyyy-MM-dd&quot;.log&quot;"/>
    <!--是否追加到文件,默认为true,通常无需设置-->
    <param name="AppendToFile" value="true"/>
    <!--创建新文件的方式,这种情况下每天只有一个日志-->
    <!--<param name="RollingStyle" value="Date" />-->
    <!--创建新文件的方式按文件大小-->
    <!--<param name="RollingStyle" value="Size" />-->
    <!--创建新文件的方式,每启动一次创建一个文件-->
    <!--<param name="RollingStyle" value="Once" />-->
    <!--创建新文件方式按日期及文件大小,默认为Composite-->
    <param name="RollingStyle" value="Composite" />
    <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
    <param name="MaxSizeRollBackups" value="10"/>
    <!--每个日志文件的最大大小-->
    <!--可用的单位:KB|MB|GB-->
    <!--不要使用小数,否则会一直写入当前日志-->
    <maximumFileSize value="2MB"/>
    <!--日志格式-->

    <!--StaticLogFileName:True/false,默认为true。为true时,RollingStyle的date值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里。-->
    <param name="StaticLogFileName" value="false"/>
    <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d [%t] %-5p - %m %c[line %L]%n"/>
    <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
    </layout>
    </appender>
    </log4net>
    </configuration>

    后台代码:

    web项目:

    在AssemblyInfo.cs文件中加一句话:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    在.cs文件:

    public partial class WebForm1 : System.Web.UI.Page
    {
    private static readonly log4net.ILog logger = log4net.LogManager.GetLogger("WebForm1");
    protected void Page_Load(object sender, EventArgs e)
    {
    logger.Info("测试Log4Net日志是否写入");
    }
    }

    运行结果:

    2016-07-21 15:48:33,440 [7]INFO  WebForm1 - 测试Log4Net日志是否写入

    控制台程序:

    注意:(1)配置文件的名称一定为"项目名称.exe.config"(2)配置文件必须放在bin/Debug文件下

    在.cs文件:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using log4net;
    using log4net.Appender;
    using log4net.Config;
    using System.Configuration;

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
    //记录错误日志
    log.Error("error", new Exception("发生了一个异常"));
    //记录严重错误
    log.Fatal("fatal", new Exception("发生了一个致命错误"));
    //记录一般信息
    log.Info("info");
    //记录调试信息
    log.Debug("debug");
    //记录警告信息
    log.Warn("warn");
    Console.WriteLine("日志记录完毕。");
    Console.Read();
    }
    }
    }

    运行结果:

    2016-07-21 17:11:31,656 [9] ERROR ConsoleApplication1.Program [(null)] - error
    System.Exception: 发生了一个异常
    2016-07-21 17:11:31,686 [9] FATAL ConsoleApplication1.Program [(null)] - fatal
    System.Exception: 发生了一个致命错误
    2016-07-21 17:11:31,686 [9] INFO ConsoleApplication1.Program [(null)] - info
    2016-07-21 17:11:31,686 [9] DEBUG ConsoleApplication1.Program [(null)] - debug
    2016-07-21 17:11:31,696 [9] WARN ConsoleApplication1.Program [(null)] - warn

    ConversionPattern的value的注解:

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 
    %n(new line):换行 
    %d(datetime):输出当前语句运行的时刻 
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
    %t(thread id):当前语句所在的线程ID 
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
    %c(class):当前日志对象的名称,例如:
    %L:输出语句所在的行号 
    %F:输出语句所在的文件名 
    %-数字:表示该项的最小长度,如果不够,则用空格填充

  • 相关阅读:
    原型和原型链
    全局对象与临时转换
    JavaScript的数据类型转换
    JavaScript 定时任务多事件冲突问题
    PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 安装
    mysql 查找多个值并且取最大值一个和分组
    mysql 关联左表不存在数据 并 根据身份证计算查找大于65岁以上老人
    JavaScript for 循环累加 json 字符串
    jQuery.1.9 live 代替事件 on 新增内容无法触发事件
    MySQL 字段基本操作
  • 原文地址:https://www.cnblogs.com/Zbuxu/p/5692545.html
Copyright © 2011-2022 走看看