【Developer Log】Log4j v2

来源:互联网 发布:网龙网络控股有限公司 编辑:程序博客网 时间:2024/05/30 13:41

Java项目可以自己有自己的写log,这是我的常用方案,已经封装好了。但是需要通过命令行或者控制台来修订写log的登记。

一个常用的java开源项目是Log4j。我有个好朋友是做需求的,她说需求的经常骂开发:为什么非要自己造轮子。好吧,她的话是有道理的。项目不仅仅是我的部分,也会涉及其他人,和他们讲了几次问什么要写log,为什么要分等级,如何写log,你们自己开发调测的信息版本释放前应该要去掉,或者设为最低等级,重点是模块的接口界面要清晰,这是定位的关键。

闲话少说,如果没有自己的log,建议使用log4j,但是要使用v2,不要使用v1。v2比v1增加了trace的等级,但是更为关键的是v2可以设置定期读取配置文件,并根据配置文件实时修订。这就非常需要了。如果通过接口定位出问题的模块,下一步程序员入场,可以修改配置,将log的等级调低,不需要重启,就可以进行详细的log输出。处理完毕后,恢复运维的log等级。

另一个也算是比较重要的功能就是可以实现log文件的压缩,txt的压缩率还是相当高,很是方便。

在一个tomcat servlet的项目中,有如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="120">
       <!--  每120秒重新load一次配置,以便支持动态配置调整
        more detail:
http://blog.csdn.net/axwolfer/article/details/40718609
        
http://logging.apache.org/log4j/2.x/manual/ -->
        <properties>
                <property name="logPath">/usr/local/bin/tomcat8/apache-tomcat-8.0.24/logs</property>
        </properties>
        <Appenders>
               <!-- 下面Console的配置如果不删除,将导致log同时也写在catalina.out中,这会导致catalina.out非常非常地大,开始以为在Loggers里面删去Console就可以,但是不起作用,将这一并删除就好了。
                <Console name="Console" target="SYSTEM_OUT">
                        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5p] %c{1}:%L - %msg%n" />
                </Console>
  -->

                <RollingFile name="RollingFile" filename="${logPath}/hcz.log" 
                                   filepattern="${logPath}/hcz%d{YYYYMMdd}-%i.log.zip">  
                      <!--我们不建议%c{1}:%L,运维人员不关心你这是哪个类和哪行的,这是给程序员定位的,在上线的时候应该删除,如果需要问题定位建议再打开。log是写给什么人看的,这点要清楚 -->
                      <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SSS} [%-5p] %c{1}:%L - %msg%n" />
                      <Policies>
                               <SizeBasedTriggeringPolicy size="20MB"/>
                      </Policies>
                      <DefaultRolloverStrategy max="50"/>
                </RollingFile>
        </Appenders>  

        <Loggers>
                <Root level="INFO"> 
                        <AppenderRef ref="RollingFile" />
                </Root>
        </Loggers>
</Configuration>

0 0
原创粉丝点击