`
sty2008boy
  • 浏览: 299424 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

Log4net 简明手册

阅读更多

使用 Log4net,需要熟悉的东东有 Logger、Appender 以及 Layout。Logger 是日志记录器,我们使用其相关方法来完成日志记录;Appender 用于设置日志的存储方式和位置,Logger 的配置中会绑定一个或多个 Appender;Layout 关联具体的 Appender,用于设置日志字符串的格式。

1. Logger

所有的记录器都必须实现 ILog 接口,该接口提供日志记录所需的大量方法。

public interface ILog : ILoggerWrapper
{
    void Debug(...);
    void Error(...);
    void Fatal(...);
    void Info(...);
    void Warn(...);

    bool IsDebugEnabled { get; }
    bool IsErrorEnabled { get; }
    bool IsFatalEnabled { get; }
    bool IsInfoEnabled { get; }
    bool IsWarnEnabled { get; }
}


通常情况下,我们通过 LogManager.GetLogger() 来获取一个记录器。LogManager 内部维护一个 hashtable,保存新创建 Logger 引用,下次需要时直接从 hashtable 获取其实例。

ILog log = LogManager.GetLogger(this.GetType());
log.Debug("aaaaaaaaaaaaaaa");


所有 Logger 的参数设置都直接或间接继承自 root,其继承关系类似 namespace。比如,名为 "MyLogger.X.Y" 参数设置继承自 "MyLogger.X"。当我们创建 "MyLooger.X.Y" 记录器时,会在配置文件找该名称的记录器设置,如果没找到,则按继承关系向上查找,直到 root。因此,在创建 Logger 时,我们通常使用类型名称做为记录器的名字,缺省情况下,它会使用 root 或某一个父配置,但在需要的时候,我们随时可以为具体的类型添加一个更加 "详细" 的配置。

<?xml version="1.0" encoding="utf-8" ?> 
<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>
    </appender>

    <logger name="Learn.Library.Log4netTest">
        <level value="ALL" />
    </logger>

    <root>
        <level value="OFF" />
        <appender-ref ref="Console" />
    </root>
</log4net>



在创建 Logger 设置时,需要注意 "level" 参数。Log4net 允许我们通过该参数调整日志记录级别,只有高于或等于该级别的日志才会被记录下来。比如在代码调试阶段,我们可能希望记录所有的信息,而在部署阶段,我们只希望记录级别更高的错误信息。这个参数的好处是允许我们在不修改代码的前提下,随时调整记录级别。

(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)


"appender-ref" 参数用于绑定一个或多个具体的 Appender。

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
    </appender>

    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>


2. Appender / Layout

Log4net 提供了大量的 Appender,最常用的包括 AdoNetAppender、AspNetTraceAppender、ConsoleAppender、FileAppender、OutputDebugStringAppender。每种 Appender 都有特定一些参数,使用时直接从 《Log4net 手册》的示例中拷贝过去,就OK了。(代码摘自 Log4net 手册)

(1) AspNetTraceAppender

<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>


(2) ConsoleAppender

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>


(3) OutputDebugStringAppender

<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender" >
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>


(4) FileAppender

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>


有关 Layout 详细信息,请参考 Log4net 相关文档,本文不做详述。

3. Configuration

Log4net 的配置方式十分灵活,即可以写到应用程序配置文件中,也可以使用独立配置文件。同时它还提供了监测配置文件变化的功能,这样我们随时可以调整配置,而无须重启应用程序。

(1) 使用 app.config / web.config

app.config / web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>

    <log4net>
        <appender name="Console" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
            </layout>
        </appender>

        <root>
            <level value="DEBUG" />
            <appender-ref ref="Console" />
        </root>
    </log4net>
</configuration>


使用代码初始化配置。

log4net.Config.XmlConfigurator.Configure();


(2) 使用自定义配置文件

test.log4net

<?xml version="1.0" encoding="utf-8" ?> 
<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>
    </appender>
    
    <root>
        <level value="DEBUG" />
        <appender-ref ref="Console" />
    </root>
</log4net>


使用代码初始化配置。

log4net.Config.XmlConfigurator.Configure(new FileInfo("test.log4net"));


使用 XmlConfigurator.ConfigureAndWatch() 方法除了初始化配置外,还会监测配置文件的变化,一旦发生修改,将自动刷新配置。

(3) XmlConfiguratorAttribute

我们还可以使用 XmlConfiguratorAttribute 代替 XmlConfigurator.Config()/ConfigureAndWatch(),ConfiguratorAttribute 用于定义与 Assembly 相关联的配置文件名。

方式1: 关联到 test.log4net,并监测变化。

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


方式2: 关联到 test.exe.log4net (或 test.dll.log4net,文件名前缀为当前程序集名称),并监测变化。

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension="log4net", Watch=true)]
分享到:
评论

相关推荐

    介绍Log4j的使用 Log4j简明手册

    Log4j简明手册 转载的资料 希望对大家有用

    log4j简明手册

    "Log4j简明手册"提供了关于这个强大日志框架的详细指南,适合初学者和经验丰富的开发者。通过学习手册,你可以了解如何配置和使用Log4j,提升你的日志管理能力,从而更好地调试和监控你的Java应用。阅读"log4j简明...

    Log4j简明手册

    Log4j简明手册 几乎所有的大型应用程序都包括它的自己的日志和跟踪API。顺应这个规则,E.U. SEMPER 项目决定写它自己的跟踪PAI。这是1996年初。在无数次加强,几次变形和许多工作后,那个API变成了如今的Log4j,一个...

    Log4j简明手册下载

    ### Log4j简明手册深度解析 #### 一、Log4j概览 Log4j是一款功能强大且灵活的开源日志框架,由Apache Software Foundation维护。它支持开发者以自定义的时间间隔控制日志的输出,同时具备平滑的学习曲线,易于上手...

    Log4简明手册(配置)

    Log4j是一个广泛使用的Java日志框架,它允许开发者灵活地控制日志的输出,并通过外部配置文件实现运行时的动态调整。Log4j的设计旨在提供一个平滑的学习曲线,使其易于理解和使用,而且它已经对多种编程语言提供了...

    Log4j的相关资料

    Log4j的相关资料 其中包括个人积累收集的: Log4j简明手册 log4j使用大全 深入学习log4j 关于Log4j比较全面的配置 Java logging API如何与log4j较量 在Java应用软件中加入logging 等许多...

    TortoiseSVN简明手册

    【TortoiseSVN简明手册】是一份详细介绍如何使用TortoiseSVN这款版本管理工具的手册。TortoiseSVN适用于多人协同开发或独立开发的场景,它提供了丰富的功能来帮助用户管理代码版本。 **文件的追踪 (update与commit)...

    matlab手册(简明版)

    ### MATLAB简明手册知识点概述 MATLAB是一种广泛应用于科学计算、算法开发以及数据分析的强大工具。这份简明手册针对MATLAB的常用命令进行了整理与分类,旨在帮助用户快速查阅和掌握核心功能。 ### 编辑与特殊...

    LINUX安装与配置简明手册.rar

    这份“LINUX安装与配置简明手册”将涵盖Linux的基本安装流程、系统配置、常用命令及管理技巧,帮助用户快速掌握Linux操作环境。 一、Linux安装 1. 安装类型:常见的Linux发行版有Ubuntu、CentOS、Debian等,每种...

    Python_入门简明手册

    【Python_入门简明手册】 Python是一种高级编程语言,以其简洁、易读的语法而闻名,是初学者理想的入门选择。以下是对标题和描述中提到的一些关键知识点的详细解释: ### 1. 基本语法 #### 1.1 if / elif / else ...

    LINUX安装与配置简明手册.zip

    《LINUX安装与配置简明手册》是一份详尽的指南,旨在帮助用户轻松地在各种平台上安装并配置Linux操作系统。这份手册包含了从选择发行版、下载镜像到完成安装,以及后续系统设置和优化的全过程。以下是手册中可能涵盖...

    Javascript-绝对简明手册.pdf

    ### JavaScript 绝对简明手册知识点总结 #### 1. 序言 - **目的**:本文档旨在帮助读者在需要的时候快速回顾JavaScript的核心概念和技术要点。 - **编写背景**:考虑到学习过程中容易遗忘,作者希望通过简洁的方式...

    LINUX安装与配置简明手册

    《LINUX安装与配置简明手册》是一份深入浅出的指南,旨在帮助初学者和有一定经验的用户更好地理解和操作LINUX系统。手册涵盖了LINUX的安装过程、基础配置以及UNIX Shell的使用等内容,是学习LINUX系统的重要参考资料...

    PLSQL简明操作手册

    ### PLSQL简明操作手册:全面解析与应用指南 #### 软件安装与初步配置 **PLSQL简明操作手册**旨在为用户提供一个简洁、高效的学习与操作指南,覆盖了从软件安装到具体功能使用的各个方面。对于初次接触PLSQL ...

    Git简明手册(简明教程)

    本手册将介绍Git的基本概念和常用命令,帮助读者快速上手Git,并了解其在协同开发中的应用。 ### Git的基本概念 Git区分了本地仓库和远程仓库。个人独立开发时,可以仅使用本地仓库,而团队协作时则需要远程仓库...

    ntop简明安装手册

    ### ntop简明安装手册 #### 一、ntop简介 ntop是一款开源网络流量监控工具,能够实时显示网络中的流量信息,包括主机之间的通信、协议类型、端口等,并可以将这些信息可视化展示出来。它支持多种网络接口,如...

    微软活动目录管理管理简明手册

    有关DNS服务器的配置,读者可以参考《电脑报2001年合订本》下册附录中《ⅡS 5.0网络建站完全手册》一文。 4 ^; U6 a4 c4 _+ F. @& i* y2 M 9 X, c" R4 J. `7 w: z(二)安装活动目录 3 |" ]' a: f6 V# D$ W运行活动...

    ORACLE RMAN 简明使用手册

    ### ORACLE RMAN 简明使用手册 #### 背景信息 本文档基于 Oracle 10gR2 版本,旨在为用户提供一份简洁明了的 Oracle RMAN(Recovery Manager)备份与恢复命令的手册。RMAN 是 Oracle 数据库的一个重要组成部分,...

Global site tag (gtag.js) - Google Analytics