`

编写log4j的配置文件

阅读更多
Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志记录器,日志要输出的地方和日志以何种形式输出。

Loggers
    组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高的日志输出事件,则会输出,否则屏蔽掉。

Appenders
    禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
    常见的Appender有:
      org.apache.log4j.ConsoleAppender(控制台)
      org.apache.log4j.FileAppender(文件)
      org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
      org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
      org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
      org.apache.log4j.net.SMTPAppender(发送到邮箱)
      org.apache.log4j.jdbc.JDBCAppender(储存到数据库)

Layouts
    有时用户希望根据自己的喜好格式化自己的日志输出。Log4j可以在Appenders的后面附加Layouts来完成这个功能。Layouts提供了四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式等等。
    常见的Layout有:
      org.apache.log4j.HTMLLayout(以HTML表格形式布局),
      org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
      org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
      org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    Layouts有以下各常用的占位符:
      %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
      %r 输出自应用启动到输出该log信息耗费的毫秒数
      %c 输出所属的类目,通常就是所在类的全名
      %t 输出产生该日志事件的线程名
      %n 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"
      %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
      %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

在程序中使用Log4j
    在程序中使用Log4j,也就是要输出日志信息,一般分为两个步骤:首先获得一个Logger实例,然后调用此实例的debug()、info()、warn()、error()、fatal()等进行日志的输出。
    在上面的配置文件中,讲到了两种命名策略,一种是直接根据类的全名命名,另一种是根据用途命名,那么在实例化和使用的时候,就会稍微有些不同。
    根据类全命命名:
    Logger logger = Logger.getLogger(this.getClass());
    //实例化一个logger,这里this.getClass()将返回这个类的全名,如果这个名字在配置文件中定义了,则这个logger有其相关定义了的属性,如果没有,则看是否定义了其父类和时候设置了继承。如果都没有,则拥有rootLogger的属性。
    //当然,logger的实例化可以任意取名,比如Logger logger = Logger.getLogger("myLogger"),但一句相关的策略,将会更加便于管理。

    logger.debug("按类取名测试:DEBUG");
    logger.info("按类取名测试:INFO");
    logger.warn("按类取名测试:WARN");
    logger.error("按类取名测试:ERROR");
    logger.error("按类取名测试:ERROR", Exception e);
    logger.fatal("按类取名测试:FATAL");
    //这就是条用logger的各种方法输出日志信息。其中logger.error("按类取名测试:ERROR", Exception e)也会将异常堆栈e的相关信息也输出到相应的Appender

    根据用途命名:
    Logger logger_sa = Logger.getLogger("sa");
    logger_sa.info("Log4j演示程序启动成功");

    Logger logger_ua = Logger.getLogger("ua");
    logger_ua.info("用户boyyf注册成功");

    Logger logger_e = Logger.getLogger("e");
    try {
    Integer.parseInt("a");
    } catch (Exception e) {
    logger_e.error("出现数值转换异常",e);
//这样会在日志中记录异常堆栈
    }



-----------------------------------------------------------
#下面是Logger的定义

#定义根logger,其余所有的logger都是它的子logger
log4j.rootLogger=DEBUG

#logger的定义策略1:根据类名定义logger

#这里就定义了两个logger,一个名为"com.ins1000.log4j.servlets",另一个名
#为"com.ins1000.log4j.servlets"。#logger的命名是具有层次性和隶属性的,跟
#类的全名一样,可以说"com.ins1000.log4j.servlets.Test"这个logger是"com.
#ins1000.log4j.servlets"这个的子logger。
log4j.logger.com.ins1000.log4j.servlets=DEBUG,CONSOLE
log4j.logger.com.ins1000.log4j.servlets.Test=DEBUG,CONSOLE,DailyRollingFile


#logger的定义策略2:根据用途定义logger

#定义了一个名为sa(system action)的logger,用于记录程序的系统行为,如程
#序启动,初始化完成等
log4j.logger.sa=DEBUG,CONSOLE_SA

#定义了一个名为us(users action)的logger,用于记录用户的一般行为,如注册
#、发布文章、发布作品等
log4j.logger.ua=DEBUG,DailyRollingFile_UA

#定义了一个名为e(Errors或Exceptions)的logger,用于记录程序运行中出现的
#错误和异常
log4j.logger.e=DEBUG,CONSOLE_E,ROLLING_FILE_E

#以上各个定义的等号右方DEBUG的表示该logger的日志输出起始级别,接着后面是
#这个logger要输#出的Appender,可以有多个,用逗号隔开。
#其次,这里提到了两种logger的命名策略,虽然互联网上几乎所有的教程皆称以类
#的全名是最简单也最好的命名策略,因为其层次结构跟我们的项目完全一致,但是
#本人处于应用需要,还是提出了另一种根据用途命名的策略,即把所有需要记录的
#日志信息分为3中(系统行为、用户行为、异常),分别输出到不同的地方。


#下面定义各个层次是否继承父辈的属性(初始级别和Appenders)
log4j.additivity.com.ins1000.log4j=true
log4j.additivity.com.ins1000.log4j.Test=true
log4j.additivity.e=false
log4j.additivity.sa=false
log4j.additivity.ua=false
log4j.addivity.org.apache=true


#下面定义各个Appenders

###################################
# Console Appender
###################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[ins1000]%p: %m [%c]%n


###################################
# Console Appender For SystemAction
###################################
log4j.appender.CONSOLE_SA=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE_SA.Target=System.out
log4j.appender.CONSOLE_SA.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE_SA.layout.ConversionPattern=[ins1000]\u7cfb\u7edf\u4fe1\u606f: %m%n

###################################
# Console Appender For Errors and Exceptions
###################################
log4j.appender.CONSOLE_E=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE_E.Target=System.out
log4j.appender.CONSOLE_E.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE_E.layout.ConversionPattern=[ins1000]\u7cfb\u7edf\u5f02\u5e38: %m [%l]%n

#上面的Appender都是输出到控制台,多个项目的信息都可能被输出到控制台,所以
#一般都会加上项目名称,如[ins1000]

########################
# Rolling File For Errors and Exceptions
########################
log4j.appender.ROLLING_FILE_E=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE_E.Threshold=ERROR

log4j.appender.ROLLING_FILE_E.File=${webappHome}/WEB-INF/log/errors/ins1000.log
#日志文件的位置,其中${webappHome}代表环境变量中webappHome的值,Log4j会在
#初始化的死后自动期待,所以我们可以在Log4j初始化的时候将webapp的绝对路径存
#入系统环境标量中,从而解决要手动修改日志文件的问题

log4j.appender.ROLLING_FILE_E.Append=true

log4j.appender.ROLLING_FILE_E.MaxFileSize=5120KB
#一个文件的大小(当超过这个大小时,自动更换一个文件)

log4j.appender.ROLLING_FILE_E.MaxBackupIndex=1
log4j.appender.ROLLING_FILE_E.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE_E.layout.ConversionPattern=%n%n[%d{yyyy-MM-dd HH:mm:ss}]%m [%l]%n

########################
# DailyRollingFile Appender
#######################
log4j.appender.DailyRollingFile=org.apache.log4j.DailyRollingFileAppender

log4j.appender.DailyRollingFile.DatePattern=yyyy-MM-dd'.log'
#日期戳后缀的格式

log4j.appender.DailyRollingFile.File=${webappHome}/WEB-INF/log/ins1000_
log4j.appender.DailyRollingFile.Append=true
log4j.appender.DailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFile.layout.ConversionPattern=[%-5p]%m [%c][%d{yyyy-MM-dd HH:mm:ss}]%n

#这个Appender的工作机理是先将日志写在/WEB-INF/log/ins1000_,待到了第二天,自动将其更名为
#ins1000_yyyy-MM-dd.log(其中yyyy-MM-dd是第一天的日期)。然后仍将第二天的日志先记录在在
#ins1000_中,第三天再改名,以此类推。

########################
# DailyRollingFile Appender For Users Action
#######################
log4j.appender.DailyRollingFile_UA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile_UA.DatePattern=yyyy-MM-dd'.log'
log4j.appender.DailyRollingFile_UA.File=${webappHome}/WEB-INF/log/users_action/ins1000_
#${webappHome} is an enviorment variable which is setted in Log4jInit
#it refers to the absolute path of the webapp
log4j.appender.DailyRollingFile_UA.Append=true
log4j.appender.DailyRollingFile_UA.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyRollingFile_UA.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %m%n
   
-----------------------------------------------------------


分享到:
评论

相关推荐

    Log4j配置文件

    ### Log4j配置文件详解 #### 一、概述 Log4j是一款开源的日志记录工具,广泛应用于Java应用程序中。其强大的配置灵活性使得开发者...掌握Log4j配置文件的编写和管理对于任何Java开发者来说都是非常重要的技能之一。

    log4j使用手册和配置文件示例

    这两个文本文件可能包含了log4j配置文件的格式规范和详细解释,对于理解和编写配置文件非常有用。 总结来说,这个压缩包提供了log4j的使用教程、配置示例、API文档、Java代码示例以及配置文件的解释,是一个全面...

    tomcat下的log4j日志配置

    2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...

    SpringBoot框架配置log4j和log4j2的配置代码

    3. **配置SpringBoot**:在`application.properties`中指定Log4j配置文件位置。 ```properties logging.config=classpath:log4j.properties ``` ### SpringBoot与Log4j2 Log4j2作为Log4j的升级版,提供更好的性能...

    log4j 配置文件

    描述中提到的“NULL”意味着没有具体的描述信息,但我们可以根据常规的Log4j配置文件理解,这个博文可能包含了如何设置和使用Log4j配置文件的教程或示例。 **标签解析:** “源码”标签表明内容可能涉及到Log4j...

    SpringBoot2.X整合Mybatis代码示例2-使用配置文件方式+Log4j

    1. **引入Log4j配置**:在项目的`src/main/resources`目录下创建`log4j2.xml`或`log4j2.json`文件,用于定义日志级别、输出位置、格式等。 ```xml [%t] %-5level %logger{36} - %msg%n"/&gt; ...

    log4j常用配置和Demo

    Log4j配置文件(log4j.properties) Log4j的配置通常在`log4j.properties`文件中进行,以下是一些常见的配置选项: - **rootLogger**:定义日志器的默认行为,包括级别和appender。 ```properties log4j.root...

    log4j配置与使用方法

    - 编写log4j配置信息。以下是一个简单的示例: ```properties log4j.rootLogger=info,ServerDailyRollingFile,stdout log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender log4...

    log4j配置实例(含配log4j.properties及jar包)

    本教程将深入探讨如何配置和使用Log4j,包括`log4j.properties`配置文件的编写以及相应的Java代码示例。 1. **Log4j的核心组件** - **Logger**: 日志记录器,用于生成日志事件。 - **Appender**: 输出目标,负责...

    Log4J的配置文件

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。Log4j 框架是用 Java 语言编写的标准日志记录框架。通过配置,可以创建出Log4J的...

    log4j的作用及测试

    #### 六、编写log4j配置文件 在`WEB-INF`目录下创建`log4j.properties`文件,并进行相应的配置: ```properties ### test ### log4j.logger.test=ERROR,l log4j.appender.l=org.apache.log4j.RollingFileAppender ...

    Log4j配置资料大全

    Log4j配置资料大全包含了一系列关于如何有效地使用和配置Log4j的资源,以下将详细介绍Log4j的关键知识点。 1. **Log4j的基本组件** - **Logger**: 日志记录器,负责生成日志事件。你可以根据需要创建多个logger,...

    mybatis配置文件以及日志文件Log4j

    Log4j是一个广泛使用的Java日志框架,"Log4jJar.zip"中包含的是Log4j的JAR文件,用于在项目中集成Log4j。Log4j允许你灵活地控制日志信息的输出级别,例如DEBUG、INFO、WARN、ERROR等,并可以选择不同的输出目的地,...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    2. **配置Log4j**:在项目的类路径下创建`log4j.properties`或`log4j.xml`配置文件,指定日志级别、输出目的地等。例如: ```properties # log4j.properties log4j.rootLogger=DEBUG, stdout log4j.appender....

    maven+springmvc+mybatis+log4j框架搭建

    本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...

    使用log4j2实现日志数据脱敏

    Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN、ERROR),并允许通过XML、JSON、YAML或纯Java配置文件进行灵活配置。 二、日志数据脱敏概念 日志数据脱敏是指在不影响日志分析的前提下,对敏感信息进行替换、...

    log4j配置实例

    **日志框架Log4j详解及配置实例** ...通过对`.properties`和`.xml`配置文件的掌握,开发者可以更好地利用Log4j提升开发效率和应用质量。在实际项目中,结合提供的"1-log4j案例"进行实践,有助于深入理解和运用Log4j。

    log4j详解配置说明

    Log4j 的配置文件通常命名为 `log4j.properties`。配置项以键值对的形式出现,每个配置项都有其特定的功能。 - **根 Logger**: 定义了全局的日志级别和 Appender(输出目的地)。 - 格式:`log4j.rootLogger=...

    log4j与spring的详细配置。

    1. **在Spring中使用Log4j**:首先,需要在Spring的`applicationContext.xml`配置文件中引入Log4j配置: ```xml &lt;bean id="log4jInitialization" class="org.springframework.beans.factory.config....

    log4j-API-最新稳定版本log4j-1.2.17

    6. **配置文件**:Log4j通常通过配置文件(如log4j.properties或log4j.xml)来设置其行为,包括定义日志器、appender和layout。 7. **MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context)**:这两...

Global site tag (gtag.js) - Google Analytics