Log4j基本配置

4        Log4j基本配置

Log4j由三个重要的组件构成:Loggers,Appenders和Layouts,分别表示:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。支持key=value格式设置或xml格式设置。

l        日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;

l        日志信息的输出目的地指定了日志将打印到控制台还是文件中;

l        而输出格式则控制了日志信息的显示内容。

4.1        日志信息的优先级

Log4j划分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。 Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。

假如在一个级别为q的Logger中发生一个级别为p的日志请求,如果p>=q,那么请求将被启用。这是Log4j的核心原则。 比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

4.2        输出源的使用

有选择的能用或者禁用日志请求仅仅是Log4j的一部分功能。Log4j允许日志请求被输出到多个输出源。用Log4j的话说,一个输出源被称做一个Appender。 Appender包括console(控制台), files(文件), GUI components(图形的组件), remote socket servers(socket 服务), JMS(java信息服务), NT Event Loggers(NT的事件日志), and remote UNIX Syslog daemons(远程UNIX的后台日志服务)。它也可以做到异步记录。

一个logger可以设置超过一个的appender。 用addAppender 方法添加一个appender到一个给定的logger。对于一个给定的logger它每个生效的日志请求都被转发到该logger所有的appender上和该logger的父辈logger的appender上。

4.2.1        ConsoleAppender

如果使用ConsoleAppender,那么log信息将写到Console。效果等同于直接把信息打印到System.out上了。

4.2.2       FileAppender

使用FileAppender,那么log信息将写到指定的文件中。这应该是比较经常使用到的情况。相应地,在配置文件中应该指定log输出的文件名。如下配置指定了log文件名为dglog.txt

log4j.appender.A2.File=dglog.txt

注意将A2替换为具体配置中Appender的别名。

4.2.3       DailyRollingAppender

使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。配置文件就会每天产生一个log文件,每个log文件只记录当天的log信息:

log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender

log4j.appender.A2.file=dglog

log4j.appender.A2.DatePattern=‘.‘yyyy-MM-dd

log4j.appender.A2.layout=org.apache.log4j.PatternLayout

log4j.appender.A2.layout.ConversionPattern= %5r %-5p %c{2} - %m%n

4.2.4       RollingFileAppender

文件大小到达指定尺寸的时候产生一个新的文件。

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File= ../logs/dglog.log

# Control the maximum log file size

log4j.appender.R.MaxFileSize=100KB

# Archive log files (one backup file here)

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

这个配置文件指定了输出源R,是一个轮转日志文件。最大的文件是100KB,当一个日志文件达到最大尺寸时,Log4J会自动把example.log重命名为dglog.log.1,然后重建一个新的dglog.log文件,依次轮转。

4.2.5       WriterAppender

将日志信息以流格式发送到任意指定的地方。

4.3        Layout的配置

Layout指定了log信息输出的样式。

4.3.1       布局样式

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

4.3.2        格式

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为"rn",Unix平台为"n"

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(Test Log4.java:10)

4.3.3       例子

例子1:显示日期和log信息

log4j.appender.A2.layout=org.apache.log4j.PatternLayout

log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n

打印的信息是:

2002-11-12 11:49:42,866 SELECT * FROM Role WHERE 1=1 order by createDate desc

例子2:显示日期,log发生地方和log信息

log4j.appender.A2.layout=org.apache.log4j.PatternLayout

log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %l"#" %m%n

2002-11-12 11:51:46,313cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409) "#"

SELECT * FROM Role WHERE 1=1 order by createDate desc

例子3:显示log级别,时间,调用方法,log信息

log4j.appender.A2.layout=org.apache.log4j.PatternLayout

log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}

method:%l%n%m%n

log信息:

[DEBUG] 2002-11-12 12:00:57,376

method:cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)

SELECT * FROM Role WHERE 1=1 order by createDate desc

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] [%d{yyyy-MM-dd HH\:mm\:SSS}] %c - %m%n  " />
		</layout>
	</appender>

	<!-- appender name="WARN" class="org.apache.log4j.DailyRollingFileAppender" this is every day create log file -->
	<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/log/app-warn.log" />
		<!--  param name="DatePattern"   value="'.'yyyy-MM-dd"/ -->
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="512KB" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] [%d{yyyy-MM-dd HH\:mm\:SSS}] %c - %m%n  " />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>
	<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/log/app-error.log" />
		<param name="Append" value="true" />
		<param name="MaxFileSize" value="512KB" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] [%d{yyyy-MM-dd HH\:mm\:SSS}] %c - %m%n  " />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
	<root>
		<priority value="WARN" />
		<appender-ref ref="STDOUT" />
        <appender-ref ref="WARN" />
        <appender-ref ref="ERROR" />
	</root>
</log4j:configuration>

Log4j基本配置

时间: 2024-10-24 13:33:17

Log4j基本配置的相关文章

Log4j:log4j.properties 配置解析

Log4j 三个主要组件 Loggers(记录器):记录日志的工具,程序中就是用它来记录我们想要的日志信息. Appenders (输出源):日志输出到什么地方,可以是控制台.文件.流位置.数据库,等等. Layouts(布局模式):日志需要记录哪些基本信息,用什么样的格式去记录展示这些信息. 一个 Logger 最少要有一个 Appender,一个 Appender 有一个 Layout. Loggers 记录器在 Log4j 中就是 Logger 类的实例对象,下面是该类中定义的一些主要方法

java之log4j的配置

log4j有很多的优点,用起来很方便,就是配置起来有些麻烦,下面我介绍一下log4j的配置方法. log4j是用来记录日志的. 软件的运行过程离不开日志.日志主要用来记录系统运行过程中的一些重要的操作信息,便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到发生的原因. 日志根据记录内容的不同,主要分成以下3类: SQL日志:记录系统执行的SQL语句. 异常日志:记录系统运行中发生的异常事件. 业务日志:记录系统运行过程,如用户登录,操作记录. 要使用log4j

Log4j的配置和使用

1.Log4j简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.邮箱等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 2.应用场景 1.生产服务器或者测试服务器的日志输出 本地开发中IDE可以直接控制台输出(菜鸟的行为),可是程序在远程服务器上如何查看呢?通过log4j,可以配置项目

karaf加入自定义log4j的配置

配置文件: karaf_home/etc/org.ops4j.pax.logging.cfg 加入配置: ### direct log messages to stdout ### log4j.appender.consoleout=org.apache.log4j.ConsoleAppender log4j.appender.consoleout.layout=org.apache.log4j.PatternLayout log4j.appender.consoleout.layout.Con

log4j.properties 配置

Log4j默认把日志信息分为五个等级: debug < info < warn < error < fatallog4j.rootLogger=INFO   #根配置,在此表示INFO级别以下的日志不记录(debug级别的日志就不会被记录了),如果你还想记录到其他地方,可以继续加,以英文逗号分割即可(INFO,console,file,其中console,file是另外的日志名,也是需要配置的.)一旦配置在了根下面,那么所有满足条件的日志都会记录到这个日志文件中(比如,file日志

Log4j rootLogger配置

Log4j 根配置语法 log4j.rootLogger = [ level ] , appenderName, appenderName, - 指代 把指定级别的日志信息输出到指定的一个或者多个位置 我们依然沿用前面的实例, 这里我们把INFO层级以及以上的信息输出到Console和File;

Log4J的配置 及多个logger配置实例

Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境. Log4j配置介绍 1. 配置文件 Log4J配置文件的基本格式如下:  #配置根Logger log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  - #配置日志信息输出目的地Appender log4j.

log4j.properties配置详解与实例

log4j.properties配置详解与实例-全部测试通过 最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛没有一点格式,看着累.这里把网上收集到的整理了一下,并且全部都在机器上测试成功了.这么好的文档估计没有了吧? ################################################################################ #①配置根Logger,其语法为: # #log4j.rootLogger =

Log4J的配置与使用详解

一.简介 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN.INFO.DEBUG,分别用来指定这条日志信息

【log4j】配置

#输出格式#%m 输出代码中指定的消息#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL#%r 输出自应用启动到输出该log信息耗费的毫秒数#%c 输出所属的类目,通常就是所在类的全名#%t 输出产生该日志事件的线程名#%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10