• Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出


    1. 第一个问题:时间少了8小时

    Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的。

    log4j配置如下:

    #all logger output level is 'ERROR' and output position is stdout
    #so only write our project's DEBUG log and ERROR log of the others
    log4j.rootLogger=ERROR, stdout, R
    #log4j.appender is set output postion
    #log4j.logger is set some package(some package your want output logger specially)=[output level],[...output position]
    
    #log4j.logger.org.springframework=OFF  
    #log4j.logger.org.apache.commons=OFF 
    #log4j.logger.org.apache.struts=OFF   
    #log4j.logger.org.hibernate=OFF
    #log4j.logger.org.logicalcobwebs=OFF
    
    #only write our project's log(DEBUG)
    log4j.logger.com.diantu=DEBUG
    
    log4j.logger.org.logicalcobwebs.proxool=DEBUG, proxool
    
    #in the console
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    #config stdout position output contain INFO level and up
    log4j.appender.stdout.Threshold=DEBUG
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
    log4j.appender.stdout.layout.ConversionPattern=[%-5p] %l:%t - %m %n
    
    #in the daily files
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.Threshold=DEBUG
    log4j.appender.R.File=${root.path}/log/EMR.log
    log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.R.layout=org.apache.log4j.PatternLayout 
    log4j.appender.R.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n
    
    log4j.logger.com.statestr=DEBUG
    
    log4j.appender.proxool=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.proxool.Threshold=DEBUG
    log4j.appender.proxool.File=${root.path}/log/proxool.log
    log4j.appender.proxool.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.proxool.layout=org.apache.log4j.PatternLayout 
    log4j.appender.proxool.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n
    

    有一篇博客讲了这个问题:http://peng4602.iteye.com/blog/1844356

    但是按照他的方法,没有作用。

    原因分析,eclipse 输出的时间是对的,那么JVM的时区设置应该是对的。系统的时间是对的,那么系统时区也应该是没有问题的。

    那么问题可能是 tomcat 获取时区失败,所以使用了默认的时区,所以可北京时间相差了 8 个小时,解决方法,

    在 C:apache-tomcat-8.0.33in 下找到 catalina.bat 打开编辑:

    在 

    set _EXECJAVA=%_RUNJAVA%
    set MAINCLASS=org.apache.catalina.startup.Bootstrap
    set ACTION=start
    set SECURITY_POLICY_FILE=
    set DEBUG_OPTS=
    set JPDA=
    

    后面加入 :

    set -Duser.timezone=GMT+08

    保存,重启tomcat即可解决。

    上面博客地址中的解决方法:set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx800m -Duser.timezone=GMT+08

    在 tomcat-8.0.33 中没有起作用。

    2. 第二个问题:log4j日志文件重复输出

    2016-04-22 01:51:28,427 [DEBUG] org.logicalcobwebs.proxool.HouseKeeper.sweep(HouseKeeper.java:81):HouseKeeper - 000036 (00/05/01) - Testing connection 2: True 
    2016-04-22 01:51:28,427 [DEBUG] org.logicalcobwebs.proxool.HouseKeeper.sweep(HouseKeeper.java:81):HouseKeeper - 000036 (00/05/01) - Testing connection 2: True 
    

    问题是 log4j 的配置文件 中两次 appender 到了一个文件中。

    第一次:

    log4j.rootLogger=ERROR, stdout, R, proxool

    其中包括了 proxool

    第二次:

    log4j.logger.org.logicalcobwebs.proxool=DEBUG, proxool

    所以当然会重复输出两次了。

    去掉 log4j.rootLogger 中的 proxool 就行了。

  • 相关阅读:
    思科交换机密码的破解
    windows server 2008 R2 NPS(网络连接策略服务)设置radius,实现telent登陆交换机路由器权限分配
    Windows Server 2008 R2服务器系统安全设置参考指南
    svn 从文件上次修改以来没有任何文件修改或加入。
    fragment The specified child already has a parent. You must call removeView()
    Android初级教程_获取Android控件的宽和高
    Caused by: java.lang.IllegalStateException: commit already called
    Android 仿携程活动列表边框布局
    Android 解决在初次打开Activity加载布局文件时,ScrollView滚动条不在顶部的问题
    中国首个开源 HTML5 跨屏前端框架 分享
  • 原文地址:https://www.cnblogs.com/digdeep/p/5420223.html
Copyright © 2020-2023  润新知