%c 输出日志信息所属的类的全名%d 输出日志时间点的日期或时间,默认格式为ISO8601 可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28%f 输出日志信息所属的类的类名%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行%m 输出代码中指定的信息,如log(message)中的message%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”%p (PRI)输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推%r 输出自应用启动到输出该日志信息所耗费的毫秒数%t 输出产生该日志事件的线程名8 数字表示占用位长- 数字的负号表示左对齐
log4j提供了以下几种常用的输出目的地: org.apache.log4j.ConsoleAppender,将日志信息输出到控制台 org.apache.log4j.FileAppender,将日志信息输出到一个文件 org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件 org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸 ,当文件大小到达指定尺寸的时候会自动把文件改名,直到example.log. MaxBackupIndex org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。 org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。
log4j.rootLogger = INFO, A1, A2,A3
log4j.appender.A1 = org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout = org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern = %-4r [%t] %-5p %c - %m%n
log4j.appender.A2 = org.apache.log4j.RollingFileAppenderlog4j.appender.A2.File = F://nepalon//classes//example3.loglog4j.appender.A2.MaxFileSize = 1KBlog4j.appender.A2.MaxBackupIndex = 3log4j.appender.A2.layout = org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
log4j.logger.TestLog4j= , Rlog4j.logger.TestLog4j.TestLog4j2=WARN
在定义TestLog4j记录器时没有指定级别,所以它的级别继承自它的父记录器,即要记录器,所以它的级别也为DEBUG。在定义TestLog4j记录器时又定义了一个名称为R的输出端,所以它的输出端有两个,一个从根记录器继承而来的名为stdout的输出端,另一个为在此定义的名为R的输出端。在此需要注意的是,在定义记录器时必须先定义记录器的级别,然后才是记录器的输出端。如果只想定义输出端而不定义级别,则虽然级别可以为空,但逗号分隔符不能省略。
在定义TestLog4j.TestLog4j2记录器时又指定了它的级别,由于一个记录器的级别只能有一个,所以新指定的级别将覆写掉它的父记录器的级别(这就象Java中的多态)。我们没有定义TestLog4j.TestLog4j2记录器的输出端,所以它的输出端将从它的父记录器中继承而来。它的父记录器为estLog4j记录器,所以它和TestLog4j记录器一样具有两个名称分别为stdout和R的输出端。