log4j多配置文件处理

来源:互联网 发布:淘宝改一口价的技巧 编辑:程序博客网 时间:2024/06/11 02:57

log4j多配置文件处理

 

         关于log4j的常用配置以及相关配置格式,详细配置可以参考:http://blog.csdn.net/yeruby/article/details/51719333

         关于web项目中,出现的log4j多配置文件,不同模块打印日志到不同文件中的相关配置及注意,做如下记录:

一、web项目中添加log4j支持,该web项目已添加spring框架

1.添加log4j相关jar包到项目中,并再src目录下创建log4j.properties主文件,文件配置示例如下:

log4j.rootLogger=INFO,C,D,E#log4j.rootCategory=INFO#rootCategory为旧版本中使用的配置,rootLogger为rootCategory的子类#自定义样式  # %r 时间 0  # %t 方法名 main  # %p 优先级 DEBUG/INFO/ERROR  # %c 所属类的全名(包括包名)  # %l 发生的位置,在某个类的某行  # %m 输出代码中指定的讯息,如log(message)中的message  # %n 输出一个换行  ### console ###log4j.appender.C = org.apache.log4j.ConsoleAppenderlog4j.appender.C.Target = System.outlog4j.appender.C.layout = org.apache.log4j.PatternLayoutlog4j.appender.C.layout.ConversionPattern = [production2][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n### log file ###log4j.appender.D=org.apache.log4j.RollingFileAppender  log4j.appender.D.File=${catalina.home}/logs/production2/production2.log  log4j.appender.D.MaxFileSize=20MBlog4j.appender.D.MaxBackupIndex=20log4j.appender.D.Append = truelog4j.appender.D.Threshold = INFO log4j.appender.D.layout=org.apache.log4j.PatternLayout  log4j.appender.D.layout.ConversionPattern= [production2][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n ### exception ###log4j.appender.E = org.apache.log4j.RollingFileAppenderlog4j.appender.E.File =${catalina.home}/logs/production2/production2_error.log log4j.appender.E.MaxFileSize=20MBlog4j.appender.E.MaxBackupIndex=20log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout=org.apache.log4j.PatternLayout  log4j.appender.E.layout.ConversionPattern= [production2][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

注意:其中${catalina.home}为Tomcat中的一个全局变量,值为tomcat根目录在文件系统中的绝对路径,该处log4j.appender.D.File为日志打印文件的路径,该处配置可用绝对路径也可以用相对路径。建议使用绝对路径(例如上),相对路径并不一定是相对webapps目录的相对路径,该相对路径是相对于tomcat的启动路径。linux系统中,启动tomcat时,执行命令时所在的目录时不固定的,所以建议使用绝对路径。

2.web项目的核心配置文件web.xml中添加log4j监听器及相关参数,配置如下:

<!--在Web Container启动时将把ROOT的绝对路径写到系统变量里。 然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,例如:tomcat/webapps/production2 --><context-param>     <param-name>webAppRootKey</param-name>     <param-value>production.root</param-value>  </context-param> <!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond  可选配置--><context-param>     <param-name>log4jRefreshInterval</param-name>     <param-value>600000</param-value>  </context-param><!--  Log4j配置文件的位置--><context-param>     <param-name>log4jConfigLocation</param-name>     <param-value>/WEB-INF/classes/log4j.properties</param-value>  </context-param><!-- Web 项目 Spring 加载 Log4j 的监听 --> <listener>   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>

注意:webAppRootKey参数,必须设置,如果未设置则缺省值为‘webapp.root’,如果有多个项目未配置,多个项目间则会出现重名冲突,在服务器(Tomcat)启动时,会出现部分项目启动失败现象

3.在项目中使用log4j打印日志:先获取Logger对象,再通过logger对象调用info,debug,error等打印日志,简单示例如下:

package com.supre.test;import org.apache.log4j.Logger;public class Test {private static Logger log = Logger.getLogger(Test.class);public String testLog(String name){log.info("入参  name:" + name);String result = null;try {result = name;log.debug(" test ");} catch (Exception e) {e.printStackTrace();log.error(" 接口异常 ");}log.info("result:"+result);return result;}}

二、其他模块添加log4j支持,配置单独log4j配置文件,采用不用的日志配置策略

1.添加log4j的配置文件(位置可选,也可将配置写在主配置文件中如三),例如msglog4j.properties,示例配置如下:

#log4j.rootLogger=INFO,appender1log4j.logger.imagedb=INFO,appender2,appender1#自定义样式  # %r 时间 0  # %t 方法名 main  # %p 优先级 DEBUG/INFO/ERROR  # %c 所属类的全名(包括包名)  # %l 发生的位置,在某个类的某行  # %m 输出代码中指定的讯息,如log(message)中的message  # %n 输出一个换行  #输出到控制台  log4j.appender.appender1=org.apache.log4j.ConsoleAppenderlog4j.appender.appender1.layout=org.apache.log4j.PatternLayout  log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] -%m%n    #设置输出样式  log4j.appender.appender2=org.apache.log4j.RollingFileAppender  log4j.appender.appender2.File=${catalina.home}/logs/production2/imagedb.log  log4j.appender.appender2.MaxFileSize=20MBlog4j.appender.appender2.MaxBackupIndex=20log4j.appender.appender2.layout=org.apache.log4j.PatternLayout  log4j.appender.appender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] -%m%n

注意:其他模块的log4j配置文件中,不能出现log4j.rootLogger配置项,该配置项为log4j的root配置,由log4j主配置文件配置,其他模块中用log4j.logger.modelName来配置,其中modelName为自定义的模块名,在后续代码中获取Logger对象时用到,

        

2.模块中加载log4j配置文件和获取Logger对象,格式如下:

加载配置文件

PropertyConfigurator.configure(filePath);

filePath为log4j配置文件的绝对路径

获取Logger对象

Logger log = Logger.getLogger("imagedb")

imagedb为上述配置文件中配置的模块名

         日志的打印同上,使用Logger对象调用info,debug,error等方法打印日志


三、多配置可以直接合并到一个配置文件中,通过配置logger来区分,例如上述配置文件,合并如下:

log4j.rootLogger=INFO,C,D,Elog4j.logger.imagedb=INFO,appender1,appender2### console ###log4j.appender.C = org.apache.log4j.ConsoleAppenderlog4j.appender.C.Target = System.outlog4j.appender.C.layout = org.apache.log4j.PatternLayoutlog4j.appender.C.layout.ConversionPattern = [manage][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n### log file ###log4j.appender.D=org.apache.log4j.RollingFileAppender  log4j.appender.D.File=../logs/production2/production2.log  log4j.appender.D.MaxFileSize=20MBlog4j.appender.D.MaxBackupIndex=20log4j.appender.D.Append = truelog4j.appender.D.Threshold = INFO log4j.appender.D.layout=org.apache.log4j.PatternLayout  log4j.appender.D.layout.ConversionPattern= [manage][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n ### exception ###log4j.appender.E = org.apache.log4j.RollingFileAppenderlog4j.appender.E.File =../logs/production2/production2_error.log log4j.appender.E.MaxFileSize=20MBlog4j.appender.E.MaxBackupIndex=20log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout=org.apache.log4j.PatternLayout  log4j.appender.E.layout.ConversionPattern= [manage][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  #输出到控制台  log4j.appender.appender1=org.apache.log4j.ConsoleAppenderlog4j.appender.appender1.layout=org.apache.log4j.PatternLayout  log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] -%m%n    #设置输出样式  log4j.appender.appender2=org.apache.log4j.RollingFileAppender  log4j.appender.appender2.File=${catalina.home}/logs/production2/imagedb.log  log4j.appender.appender2.MaxFileSize=20MBlog4j.appender.appender2.MaxBackupIndex=20log4j.appender.appender2.layout=org.apache.log4j.PatternLayout  log4j.appender.appender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] -%m%n


模块中加载log4j时,直接加载该配置文件即可



原创粉丝点击