log4j配置使用

来源:互联网 发布:网络行为管理软件 编辑:程序博客网 时间:2024/05/17 02:58

log4j是Apache开发的比较优秀的开源的日志管理项目。各位小伙伴肯定都会用到这个如此优秀的平台。俗话说:没有买卖就没有伤害,既然使用就难免会遇到各种问题,废话不多讲,霸王硬上弓。

1 在java project项目中使用log4j
小伙伴们在各种地方都能查到如何使用log4j,无非就是把log4j-x.x.x.jar这个jar包加入到项目中,在classpath(src)下写一个log4j.properties文件,加入log4j的一些配置信息。
按套路完成,启动测试类,忽然就发现自己被套路了.
说好的log4j格式呢,连个j都没见到;原因有二。
其一,slf4j-log4j12-x.x.x.jar 包没有加入,
其二,log4j.properties配置文件中

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.Target=System.outlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

这些配置没有。关于slf4j和log4j的配置内容后续再曰。

2 在web项目中使用log4j
上述在java project中的情况就不再赘述。说一下在web项目中可用的其他的一些配置方式,类似于java project的方式足以满足使用。不过在web项目中会出现好多的.xml、.properties的配置文件,放到一个统一的文件夹进行统一管理还是相当好的。所以,这就不满足将log4j.properties放在CLASSPATH路径下的条件,然而,log4j只钟情于CLASSPATH,所以,我们得告诉他白娘子住进雷峰塔了。
一种是没用框架的情况:需要在web.xml加入以下配置

<servlet>         <servlet-name>log4j-init</servlet-name>         <servlet-class>util.InitLog4j</servlet-class>         <init-param>             <param-name>log4j-init-file</param-name>             <param-value>WEB-INF/classes/config/log4j.properties</param-value>         </init-param>         <load-on-startup>1</load-on-startup>    </servlet> 

InitLog4j类:

public class InitLog4j extends HttpServlet {       private static final long serialVersionUID = 1L;        public void init() throws ServletException {           String prefix = getServletContext().getRealPath("/");           prefix = prefix.replace("//", "\\\\");           String file = getInitParameter("log4j-init-file");           String log4jpath = prefix + file;           if (file != null) {//             PropertyConfigurator.configure("log4j.properties");               PropertyConfigurator.configure(log4jpath);           }        }}

第二种情况就是使用spring框架:在web.xml中加入以下配置

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

此次,只是总结了一下各种情况下的log4j的配置,至于slf4j、log4j的深入解读,后续再曰…

原创粉丝点击