美文网首页
log4net配置文件

log4net配置文件

作者: 高调的小丑 | 来源:发表于2018-12-06 15:38 被阅读14次

    主要有两部分configSections和log4net组成

    <log4net>

    支持的属性

    属性 详解
    debug 可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。
    update 可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。
    threshold 可选,取值是repository(库)中注册的level,默认值是ALL。

    支持的子元素

    属性 详解
    appender 0或多个
    logger 0或多个
    renderer 0或多个
    root 最多一个
    param 0或多个

    <root>

    实际上就是一个根logger,所有其它logger都默认继承它,如果配置文件里没有显式定义,则框架使用根日志中定义的属性。root元素没有属性。

    支持的子元素

    属性 详解
    appender-ref 0个或多个,要引用的appender的名字。
    level 最多一个。 只有在这个级别或之上的事件才会被记录。
    param 0个或多个, 设置一些参数。

    <logger>

    支持的属性

    属性 详解
    name 必须的,logger的名称
    additivity 可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。

    支持的子元素

    属性 详解
    appender-ref 0个或多个,要引用的appender的名字。
    level 最多一个。 只有在这个级别或之上的事件才会被记录。
    param 0个或多个, 设置一些参数。

    <appender>

    支持的属性

    属性 详解
    name 必须的,Appender对象的名称
    type 必须的,Appender对象的输出类型

    type的类型(例:type="log4net.Appender.FileAppender"):

    AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
    
    AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。
    
    AspNetTraceAppender  能用asp.net中Trace的方式查看记录的日志。
    
    BufferingForwardingAppender 在输出到子Appenders之前先缓存日志事件。
    
    ConsoleAppender 将日志输出到应用程序控制台。
    
    EventLogAppender 将日志写到Windows Event Log。
    
    FileAppender 将日志输出到文件。
    
    ForwardingAppender 发送日志事件到子Appenders。
    
    LocalSyslogAppender 将日志写到local syslog service (仅用于UNIX环境下)。
    
    MemoryAppender 将日志存到内存缓冲区。
    
    NetSendAppender 将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
    
    OutputDebugStringAppender 将日志输出到Debuger,如果程序没有Debuger,就输出到系统Debuger。如果系统Debuger也不可用,将忽略消息。
    
    RemoteSyslogAppender 通过UDP网络协议将日志写到Remote syslog service。
    
    RemotingAppender 通过.NET Remoting将日志写到远程接收端。
    
    RollingFileAppender 将日志以回滚文件的形式写到文件中。
    
    SmtpAppender 将日志写到邮件中。
    
    SmtpPickupDirAppender 将消息以文件的方式放入一个目录中,像IIS SMTP agent这样的SMTP代理就可以阅读或发送它们。
    
    TelnetAppender 客户端通过Telnet来接受日志事件。
    
    TraceAppender 将日志写到.NET trace 系统。
    
    UdpAppender 将日志以无连接UDP数据报的形式送到远程宿主或用UdpClient的形式广播。
    

    支持的子元素

    属性 详解
    appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。
    filter 0个或多个,定义此app使用的过滤器。
    layout 最多一个。定义appender使用的输出格式。
    param 0个或多个, 设置Appender类中对应的属性的值。

    实际上<appender>所能包含的子元素远不止上面4个

    <layout>

    布局,只能作为<appender>的子元素。

    支持的属性

    属性 详解
    type 必须的,Layout的类型

    Layout的类型:

    1. SimpleLayout 简单输出格式,只输出日志级别与消息内容。
    2. RawTimeStampLayout 用来格式化时间,在向数据库输出时会用到。样式如“yyyy-MM-dd HH:mm:ss“
    3. ExceptionLayout 需要给Logger的方法传入Exception对象作为参数才起作用,否则就什么也不输出。输出的时候会包含Message和Trace。
    4. PatternLayout 使用最多的一个Layout,能输出的信息很多,使用方式可参见PatternLayout用法

    支持的子元素

    属性 详解
    param 0个或多个, 设置一些参数。

    <filter>

    过滤器,只能作为<appender>的子元素。

    支持的属性

    属性 详解
    type 必须的,Filter的类型

    Filter的类型:

    1. DenyAllFilter 阻止所有的日志事件被记录
    2. LevelMatchFilter 只有指定等级的日志事件才被记录
    3. LevelRangeFilter 日志等级在指定范围内的事件才被记录
    4. LoggerMatchFilter 与Logger名称匹配,才记录
    5. PropertyFilter 消息匹配指定的属性值时才被记录
    6. StringMathFilter 消息匹配指定的字符串才被记录

    支持的子元素

    属性 详解
    param 0个或多个, 设置一些参数。

    <parame>

    <param>元素可以是任何元素的子元素。

    支持的属性

    属性 详解
    name 必须的,取值是父对象的参数名。
    value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。
    type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。

    支持的子元素

    属性 详解
    param 0个或多个, 设置一些参数。

    关联配置文件

    log4net默认的关联配置文件在app.config或者web.config中

    log4net.Config.XmlConfigurator

    XmlConfiguratorAttribute有3个属性:

    1. ConfigFile: 配置文件的名字,文件路径相对于应用程序目录
      (AppDomain.CurrentDomain.BaseDirectory)。ConfigFile属性不能和ConfigFileExtension属性一起使用。
    2. ConfigFileExtension: 配置文件的扩展名,文件路径相对于应用程序的目录。ConfigFileExtension属性不能和ConfigFile属性一起使用。
    3. Watch: 如果将Watch属性设置为true,就会监视配置文件。当配置文件发生变化的时候,就会重新加载。

    如果ConfigFile和ConfigFileExtension都没有设置,则使用应用程序的配置文件App.config(Web.config)。

    可以在项目的AssemblyInfo.cs文件里添加以下的语句:

    //监视默认的配置文件,App.config 
    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    
    //使用配置文件log4net.config,不监视改变。注意log4net.config文件的目录,BS程序在站点目录//下,CS则在应用程序启动目录下,如调试时在/bin/Debug下,一般将文件属性的文件输出目录调为//始终复制即可
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]
    
    //使用配置文件log4net.config,不监视改变
    [assembly: log4net.Config.XmlConfigurator()]
    

    也可以在Global.asax的Application_Start里或者是Program.cs中的Main方法中添加,注意这里一定是绝对路径,如下所示:

    log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~") + @"/log4net.config"));
    

    这是在CS程序下,可以用以下方法获得:

    string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
    
    string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
    
    string configFilePath = assemblyDirPath + " //log4net.config";
    
    log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));
    

    或直接使用绝对路径:

    //使用自定义的配置文件,直接绝对路径为:c:/log4net.config
    
    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(@"c:/log4net.config"));
    

    日志等级

    • FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。
    • ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。
    • WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。
    • INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。
    • DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

    日志等级由高到低

    OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL 
    

    转自:https://www.cnblogs.com/hunternet/p/9600136.html

    相关文章

      网友评论

          本文标题:log4net配置文件

          本文链接:https://www.haomeiwen.com/subject/kcyocqtx.html