好记性不如烂笔头95-spring3学习(16)-spring配置log4j

1) Log4j简介
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器等;
我们也可以控制每一条日志的输出格式;
定义每一条日志信息的级别,更加细致地观察系统某一些步骤的运行过程。
这些功能可以通过配置文件来灵活配置,而基本不需要修改应用的代码。
2) 在spring框架中配置log4j
要下载相应的jar包(log4j.jar)
在web.xml中加入如下配置

 <context-param>
      <param-name>log4jConfigLocation</param-name>
      <param-value>/WEB-INF/classes/log4j.properties</param-value>
   </context-param>
   <context-param>
      <param-name>log4jRefreshInterval</param-name>
      <param-value>6000</param-value>
   </context-param> 
    <listener>
      <listener-class>
        org.springframework.web.util.Log4jConfigListener
      </listener-class>
   </listener>

说明:在上文的配置里,在上文的配置里,Log4jConfigListener会去WEB-INF/classes/log4j.propeties 读取配置文件;
开一条watchdog线程每60秒扫描一下配置文件的变化(这样在web服务启动后再去修改log4j的配置文件后,不用重新启动web服务);
并把web目录的路径压入一个叫webapp.root的系统变量(webapp.root将在log4j.properties文件中使用)。

3) 一个常用的Log4j配置文件

#OFF FATAL ERROR WARN INFO DEBUG ALL
#log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = INFO, console, R
#level=INFO,all can be output

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#define the output type
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R = org.apache.log4j.RollingFileAppender
#the absolute route of the log4j file
log4j.appender.R.File = /log.txt
#the size
log4j.appender.R.MaxFileSize = 500KB
#back up a file
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

其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
【解读】

log4j.rootLogger = INFO, console, R
这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来;
appenderName有两个,一个 console,一个R(名字可以自己随便定义)

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#define the output type
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
在屏幕中输出信息,以及输出的样式

log4j.appender.R = org.apache.log4j.RollingFileAppender
#the absolute route of the log4j file
log4j.appender.R.File = /log.txt
定义了在文件中输出信息,文件对应的名字为log.txt

其他
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

4)在程序中使用
引入 import org.apache.log4j.Logger
声明一个logger
private static Logger logger = Logger.getLogger(ClassName.class);
在程序中的相应位置加入输出信息
logger.info(“用户登录:”+user.getUserName());

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。