Log4j.properties配置文件
1.配置文件
#log4j.rootLogger = [ level ] , appenderName, appenderName, ... log4j.rootLogger = INFO, console, R #level=INFO,all can be output #console is set to be a ConsoleAppender log4j.appender.console = org.apache.log4j.ConsoleAppender #console have four patterns #org.apache.log4j.HTMLLayout #org.apache.log4j.PatternLayout #org.apache.log4j.SimpleLayout #org.apache.log4j.TTCCLayout log4j.appender.console.layout = org.apache.log4j.PatternLayout ## notice: [localhost-startStop-1] [%t] params #define the output type log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t] [%c]-[%p] %m%n #file is set to output to a extra file log4j.appender.R = org.apache.log4j.DailyRollingFileAppender ##it will not change to yyyy-MM-dd.txt in current date log4j.appender.R.DatePattern=yyyy-MM-dd'.txt' #the absolute route of the log4j file log4j.appender.R.File = e:/rencongums/dailylog/log_ #the size #MaxFileSize doesn't apply to DailyRollingFileAppender #log4j.appender.R.MaxFileSize = 500KB #back up a file #MaxBackupIndex doesn't apply to DailyRollingFileAppender #log4j.appender.R.MaxBackupIndex = 1 log4j.appender.R.layout = org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] - %m%n
2.文件放置路径
一般情况下都放在src目录下,对于Javaweb项目,也可以放在其他项目,比如放在/WEB-INF/classes/resources/下面,那么需要在web.xml文件中配置
<!-- 如果不放在 src根目录下就要重写配置log4jConfigLocation--> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/resources/log4j.properties</param-value> </context-param>
3.配置参数
3.1 log4j.rootLogger = INFO, console, R
##log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = INFO, console, R
其中这个rootLogger就是这么个玩意儿,代码如下:

配置这个rootLogger的,感觉就是根据repositorySelector来生成一个loggerRepository,然后每次都由这个loggerRepository来产生一个logger。具体可以参见
org.apache.log4j.config这个包。
这一行定义logger,第一个是日志输出级别,级别包括INFO,DEBUG,INFO,ERROR,FATAL,WARN,TRACE,ALL等具体的可以在Logger类中看到这几个方法。
对应的分别是info(Object message),debug(Object message)...等等,也可以在Level类中看到

他们的顺序大概是这个样子

fatal肯定在最上面,然后就是下面的依次来,可以参见Priorty这个类,虽然已经不推荐了,但是顺序并没有改变。
appenderName可以随便取名字,也可以可以多个,一般一个console(或者stdout)对应输出到控制台,另一个就是R(或者file)对应到log.txt作为日志文件输出。
3.2 log4j.appender
如下是我们可以看到的appender的各个继承结构

首先用得很多的就是writerAppender.其中ConsoleAppender和RollingFileAppender是用的比较多的,一个用于控制台,一个用于日志记录。
对于ConsoleAppender需要配置三个东东。
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t] [%c]-[%p] %m%n
对于FileAppender需要配置如下一些东东。
log4j.appender.R = org.apache.log4j.DailyRollingFileAppender##就是按天来记录
##这个天不是每天都产生,而是运行的每一天,如果某天不运行还是没有的,而且在当天虽然是产生的,但是并不带有日期后缀。
##it will not change to yyyy-MM-dd.txt in current date
log4j.appender.R.DatePattern=yyyy-MM-dd'.txt'##就是当天就叫做e:/rencongums/dailylog/log_,下一次就把这一次改为log_yyyy-MM-dd.txt
#DatePattern仅适用于DailyRollingFileAppender
log4j.appender.R.File = e:/rencongums/dailylog/log_
#MaxFileSize doesn't apply to DailyRollingFileAppender
#log4j.appender.R.MaxFileSize = 500KB
#MaxBackupIndex doesn't apply to DailyRollingFileAppender
#log4j.appender.R.MaxBackupIndex = 1
##MaxFileSize和MaxBackupIndex不适用于DailyRollingFileAppender,适用于RollingFileAppender当日志记录满的时候会生成一个log(1).txt
也同样有layout和layout.ConversionPattern
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] - %m%n
所以简单的配置基本上就三个东东 appender,layout和layout.ConversionPattern,日志文件的话会指定名称和其他的一些参数。
而对于layout又基本包括以下等几种
#org.apache.log4j.HTMLLayout
#org.apache.log4j.PatternLayout
#org.apache.log4j.SimpleLayout
#org.apache.log4j.TTCCLayout

而其中PatternLayout里面有这样一个方法

就是设置COnversionPattern,所以也不难看到上面需要设置ConversionPattern
关于ConversionPattern中各个参数的信息可以看到




大概就是这么个意思。
3.3 log4j.logger
log4j.logger.(+包名) 表示该包的日志级别
log4j.logger.com.cong.orm=TRACE
以上就是我的个人理解咯
浙公网安备 33010602011771号