先上个例子:
log4j.rootLogger=INFO,stdout,daily log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.daily.encoding=UTF-8 log4j.appender.daily=org.apache.log4j.DailyRollingFileAppender log4j.appender.daily.DatePattern='.'yyyy-MM-dd log4j.appender.daily.File=${webapp.wins-dsp-admin}/logs/dsp-admin.log log4j.appender.daily.layout=org.apache.log4j.PatternLayout log4j.appender.daily.layout.ConversionPattern=[%p] %-d{yyyy-MM-dd HH:mm:ss} [%t] [%c.%M:%L] %m%n log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
下面是log4j配置文件的基本格式:
#配置根Logger log4j.rootLogger = [level], appenderName1, appenderName2, … #配置日志信息输出目的地Appender log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.optionN = valueN #配置日志信息的格式(布局) log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j.appender.appenderName.layout.optionN = valueN
1.[level]:表示日志级别。可取值为ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF。当配置为其中一个等级时,该等级以及大于该等级的log都输出。
例如:当将level配置为INFO时,log.info(“test log4j”)以及log.error(“test log4j”)都可以输出,但是log.debug(“test log4j”)不能输出。
2.rootLogger是对整个项目生效的。也就是说,如果我只配了log4j.rootLogger=INFO,那么整个项目的日志级别都为INFO。
如果想要对某些特定的包设置不同的日志级别,可以使用log4j.logger.[package]。
例如:log4j.logger.com.test=DEBUG,那么包com.test下的日志级别为DEBUG,其他目录下仍为INFO。
3.Appender为日志输出的目的地,可取下列值:
org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) org.apache.log4j.JDBCAppender(将日志信息保存到数据库中)
abcd为随意起的名称,但对于abcd的配置要沿用这个名称。
下面是Appender的具体配置:
log4j.appender.abcd.File(log输出的路径及文件名)。
log4j.appender.abcd.MaxFileSize(日志文件的大小)。
log4j.appender.abcd.MaxBackupIndex(备份文件个数)。
log4j.appender.abcd.DatePattern(日志备份文件名后缀格式,最上面例子中备份文件名为localhost.2014-10-10.log)。
log4j.appender.abcd.layout(日志布局格式,常用为PatternLayout):
org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.abcd.layout.ConversionPattern(自定义日志输出格式):
例如:%d – %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss},输出类似:2002-10-18 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
4.Java代码中的调用:
public class Executor { private static Logger log = Logger.getLogger(Executor.class); public static void main(String[] args) { log.info("test log4j"); } }
哇塞,居然是沙发?留个名