1.在mvc项目中使用log4j,需要导入jar包
然后在web.xml文件中配置:
<!-- log4j监听器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>
<!-- log4j日志输出 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value><!-- 指定log4j配置文件的路径 -->
但是今天看了公司的一个项目,他没有在web.xml文件中配置这些东西,但导的包也不一样
,不知道是不是底层的原因自动到resource文件夹下找log4j.properties.但是slf4j-log4j12下面有包含log4j的包
获取:Logger logger = LoggerFactory.getLogger(this.class);
log4j的配置,根据一套配置信息来记录:
log4j.rootLogger=ERROR,CONSOLE,ROLLING_FILE_RESOURCE
#INFO,CONSOLE,ROLLING_FILE
#DEBUG,ROLLING_FILE
###################
# Console Appender
###################
#输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender#全局的指定输出等级,还可以指定appenderName的输出等级,如:og4j.appender.CONSOLE.Threshold=INFO
log4j.appender.Threshold=INFO
#目标
log4j.appender.CONSOLE.Target=System.out
#日志布局格式:PatternLayout(可以灵活的指定布局格式,常用)
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#日志输出格式
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n########################
# Daily Rolling File REOURCE
########################
#每天产生一个日志文件
log4j.appender.ROLLING_FILE_RESOURCE=org.apache.log4j.DailyRollingFileAppender# log4j会先生成cps_show.log这样一个文件,然后当这一天过去的时候,生成一个新的cps_show.log,然后把原来的保存为加#上日期格式后缀的文件,cps_show2009-11-12.log
log4j.appender.ROLLING_FILE_RESOURCE.DatePattern = yyyy-MM-dd'.log'
#D\:\\logs\\cps_show.log logs/cps_show.log
#指定日志文件路径
log4j.appender.ROLLING_FILE_RESOURCE.File=D\:\\logs\\cps_showlog4j.appender.ROLLING_FILE_RESOURCE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE_RESOURCE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
#项目中com.ultrapower.cps.cps_show文件夹下的级别
log4j.logger.com.ultrapower.cps.cps_show=INFO,CONSOLE,ROLLING_FILE_RESOURCE
log4j.additivity.com.ultrapower.cps.cps_show=false
#保证这个级别是warn的日志一定会被记录,即使log4j的根日志级别是ERROR
log4j.logger.org.springframework.web.servlet.handler.SimpleMappingExceptionResolver=WARN#数据操作有关打印到控制台的级别
log4j.logger.java.sql.ResultSet=INFOlog4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
1 ) . 配置根 Logger ,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者您定义的级别。 Log4j 建议只使用四个级别 ,优先级从高到低分别是 ERROR 、WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来 。 appenderName 就是指 B 日志信息输出到哪个地方。您可以同时指定多个输出目的地。
log4j.additivity的说明
log4j.additivity是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下 子Logger 会继承 父Logger 的appender,也就是说 子Logger 会在 父Logger 的appender里输出。若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。如:
log4j.rootLogger=INFO, stdout,logfile
log4j.logger.com.ambow.upgrade=INFO, dataSync
则com.ambow.upgrade包及其子包下的Logger不光在Appender dataSync里输出,也会在rootLogger的Appender stuout和logfile中输出;
若想让com.ambow.upgrade包及其子包下的Logger只在Appender dataSync中输出,则在log4j.properties中添加下行即可:
log4j.additivity.com.ambow.upgrade=false