博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出...
阅读量:7062 次
发布时间:2019-06-28

本文共 2775 字,大约阅读时间需要 9 分钟。

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 otherslog4j.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=DEBUGlog4j.logger.org.logicalcobwebs.proxool=DEBUG, proxool#in the consolelog4j.appender.stdout=org.apache.log4j.ConsoleAppender#config stdout position output contain INFO level and uplog4j.appender.stdout.Threshold=DEBUGlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%-5p] %l:%t - %m %n#in the daily fileslog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.Threshold=DEBUGlog4j.appender.R.File=${root.path}/log/EMR.loglog4j.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 %nlog4j.logger.com.statestr=DEBUGlog4j.appender.proxool=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.proxool.Threshold=DEBUGlog4j.appender.proxool.File=${root.path}/log/proxool.loglog4j.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.33\bin 下找到 catalina.bat 打开编辑:

在 

set _EXECJAVA=%_RUNJAVA%set MAINCLASS=org.apache.catalina.startup.Bootstrapset ACTION=startset 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 就行了。

转载地址:http://njnll.baihongyu.com/

你可能感兴趣的文章
centos6.5上卸载和安装JDK7
查看>>
从文件加载至NSData
查看>>
Java连接访问Oracle--Connection.setSavepoint()方法使用
查看>>
LeetCode OJ:Maximal Square(最大矩形)
查看>>
抽象工厂 C++实现
查看>>
[KMP]字符串匹配算法
查看>>
[转] 随机数是骗人的,.Net、Java、C为我作证
查看>>
第一天
查看>>
VUE基础插值表达式
查看>>
如何在mysql客户端即mysql提示符下执行操作系统命令
查看>>
人月神话读后感
查看>>
Learning Agile software Development
查看>>
HDFS原理解析(整体架构,读写操作流程及源代码查看等)
查看>>
“精于算计”与“精于计算”我们应该更偏重哪方面?
查看>>
CAFFE安装(10):Mnist测试(可不做)
查看>>
7.2.7、数组指针的操作
查看>>
SetProp()、GetProp()、RemoveProp() API接口
查看>>
ES6 module模块
查看>>
content management system
查看>>
缓存穿透 缓存雪崩
查看>>