`

Log4J日志文件的详细配置

阅读更多
    在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。
  
最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。

在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
  
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
  
此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。

通常,我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告 诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。
Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

Properties格式

lg4j.properties 文件作为作为常用的配置文件的方法如下:

先来看一个例子:


log4j.rootLogger=INFO, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.A1.layout.ConversionPattern=%-5p %c %m%n

log4j.logger.org.apache=ERROR


1)log4j.rootLogger=INFO, A1
Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

2)log4j.appender.A1=org.apache.log4j.ConsoleAppender
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.optionN = valueN

其中, Log4j 提供的 appender 有以下几种:
org.apache.log4j.ConsoleAppender (控制台),
org.apache.log4j.FileAppender (文件),
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

例如:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。

3)log4j.appender.A1.layout=org.apache.log4j.PatternLayout
其中, Log4j 提供的 layout 有以下几种:
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)

log4j.appender.A1.layout.ConversionPattern=%-5p %c %m%n
格式化日志信息
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。


再来看一个示例文件:


log4j.rootCategory=INFO, stdout,file 

###. 定义名为 stdout 的输出端的类型 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 

###. 定义名为 file 的输出端的类型为每天产生一个日志文件。 
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=log.txt 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 

###. 指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。 
log4j.logger.com.neusoft=DEBUG 

###. 如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。 
log4j.logger.com.opensymphony.oscache=ERROR 
log4j.logger.net.sf.navigator=ERROR 

### struts 配置 
log4j.logger.org.apache.commons=ERROR 
log4j.logger.org.apache.struts=WARN 
###也可以统一写成如下,当然了,如果想细分的话,当然上面比较好点
#log4j.logger.org.apache=ERROR

### displaytag 配置 
log4j.logger.org.displaytag=ERROR 

### .spring 配置 
log4j.logger.org.springframework=DEBUG 

### . ibatis 配置 
log4j.logger.com.ibatis.db=WARN
 
### . hibernate 配置 
log4j.logger.org.hibernate=DEBUG 


其他:

1.ConsoleAppender选项
    Threshold=WARN:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    Target=System.err:默认情况下是:System.out,指定输出控制台

2.FileAppender 选项
    Threshold=WARN:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

3.DailyRollingFileAppender 选项
    Threshold=WARN:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
    DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
    1)'.'yyyy-MM: 每月
    2)'.'yyyy-ww: 每周
    3)'.'yyyy-MM-dd: 每天
    4)'.'yyyy-MM-dd-a: 每天两次
    5)'.'yyyy-MM-dd-HH: 每小时
    6)'.'yyyy-MM-dd-HH-mm: 每分钟

4.RollingFileAppender 选项
    Threshold=WARN:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

XML格式的配置


<?xml version="1.0" encoding="GB2312" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- 设置通道 ID:org.zblog.all 和输出方式: org.apache.log4j.RollingFileAppender -->
	<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
		<!-- 设置 File 参数:日志输出文件名 -->
		<param name="File" value="all.output.log" />
		<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
		<param name="Append" value="false" />
		<!-- 设置文件大小 -->
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<!-- 设置输出文件项目和格式 -->
			<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
		</layout>
	</appender>
	<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="output.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="10240" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
		</layout>
	</appender>
	<!-- 设置域名限制,即 zcw.log 域及以下的日志均输出到下面对应的通道中 -->
	<logger name="zcw.log">
		<!-- 设置级别 -->
		<level value="debug" />
		<!-- 与前面的通道 id 相对应 -->
		<appender-ref ref="org.zblog.zcw" />
	</logger>
	<root>
		<!-- 与前面的通道 id 相对应 -->
		<appender-ref ref="org.zblog.all" />
	</root>
</log4j:configuration>


Doc 文档可以从其网站上下载:

http://logging.apache.org/log4j/docs/api/index.html

http://logging.apache.org/log4j/docs/documentation.html

 
关于 eclipse 的 log4j的插件log4e  可以去他的官方网站上下载:http://log4e.jayefem.de/index.php/Download

后记,此文章为我浏览很多网友的文章整理出来的,之前也知道怎么用,但是发现时间长了,就容易忘记,昨天同事还在问我配过log4j没有,我说我配过,但是忘记了,哎,所以还是摘录下来吧,不为别的,只为备忘,后期如果还遇到了,一看这个我想也应该会了,如果那位兄弟看到了,如果有什么问题,可以随时交流,共同进步。

分享到:
评论

相关推荐

    log4j日志配置以及配置文件详解

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    SSM整合中的Log4j日志的配置详情

    Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...

    tomcat下的log4j日志配置

    5. **重启 Tomcat**:重启 Tomcat 后,相应的日志文件将按照 `log4j.properties` 文件中的设置生成。 **优点**:灵活性高,可以针对每个应用定制化日志配置;便于管理和追踪。 **总结**:根据项目的需求选择合适的...

    tomcat6.0 配log4j日志的必须文件及配置过程

    tomcat6.0 配log4j日志的必须文件及配置过程 tomcat6-------lib | |--------tomcat-juli-adapters.jar | |--------log4j.jar | |--------log4j.properites | |----bin |--------tomcat-juli.jar 最后把log4...

    logstash 采集log4j日志配置文件

    logstash采集log4j日志发送到es配置文件,可以把日志根据日志级别区分开,一个级别一条日志是es中的一条数据

    log4j中配置日志文件相对路径方法(PDF)

    ### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...

    log4j日志文件

    3. **日志文件配置** - `log4j.appender.filelog.File=your file dir`:指定日志文件的位置。 - `log4j.appender.filelog.MaxFileSize=your filesize`:设定单个文件的最大大小。 - `log4j.appender.mylog....

    Log4j配置文件详细说明

    本篇将详细介绍Log4j的配置文件及其常用属性,旨在帮助初学者快速掌握Log4j的配置方法。 首先,Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,用于定义日志输出的行为。这里我们主要讨论基于文本格式的`...

    log4j日志文件乱码解决方法

    本文将详细讨论如何解决Log4j日志文件出现的乱码问题。 首先,我们要理解Log4j的工作原理。Log4j允许开发者自定义日志输出的方式,包括输出到控制台、文件、数据库等。它使用了`QuietWriter`类来写入日志,`...

    log4j.CustomLogAppender 限制log4j文件保存天数

    每天生成一个log4j日志文件,如果只需要将最近一段时间内的日志文件保留,以前或更早的文件不用保留。例如只保留最近一周的日志,日志文件保留3天等等这些。。。通过这个jar包就可以实现。 log4j.properties文件在...

    log4j2的日志xml配置文件

    log4j2的配置文件

    log4j日志文件的JAR包及配置文件

    log4j日志文件的JAR包及配置文件。 使用log4j日志文件的步骤: Step1:添加日志文件所需要的JAR包; Step2:添加日志的配置文件; Step3:创建日志对象,使用日志对象的方法记录日志。

    log4j.properties配置文件

    - `log4j.appender.file.File=d:\\logs\mylog.log`: 指定日志文件的路径为`d:\\logs\mylog.log`。 - `log4j.appender.file.layout`: 同样使用PatternLayout进行日志格式化。 - `log4j.appender.file.layout....

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志等

    log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能

    springMVC 日志配置 限制log4j 输出文件大小

    实际项目中经常会用到日志打印 为避免日志打印输出文件过大 消耗服务器内存 需要限制大小

    log4j(二):动态配置日志输出路径

    上述配置中,`log4j.appender.FILE.File`指定了日志文件的路径,`${user.home}/logs/myapp.log`表示日志将被写入用户主目录下的logs文件夹中的myapp.log文件。通过改变这个路径,我们就能动态地改变日志输出的位置。...

    log4j 写多个日志文件,按照日期每天都记

    通过上述配置,`log4j`就能够按照日期每天创建新的日志文件,并且可以根据需求定制不同类别的日志输出。这对于大型系统的监控和维护来说,是非常重要的功能。在实际开发中,根据项目规模和需求,可能还需要考虑日志...

    Log4J_全能配置文件.pdf

    - `log4j.appender.FILE.File=file.log`:指定日志文件名称为`file.log`。 - `log4j.appender.FILE.Append=false`:设置是否追加日志,默认不追加。 - `log4j.appender.FILE.layout=org.apache.log4j.PatternLayout`...

    log4j多文件输出打印

    本话题将深入探讨如何使用Log4j实现多文件输出打印,以及自定义日志的配置。 首先,我们要理解Log4j的基本工作原理。Log4j的核心组件包括Logger、Appender和Layout。Logger负责生成日志事件,Appender则负责接收...

Global site tag (gtag.js) - Google Analytics