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.33\bin 下找到 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 就行了。

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

  1. IIS7日志中时间与系统时间不一致的原因

    最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...

  2. JAVA中获取当前系统时间及格式转换

    JAVA中获取当前系统时间   一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...

  3. LoadRunner中获取当前系统时间方法

    LoadRunner中获取当前系统时间方法 发表于:2017-6-02 11:41  作者:人生_0809   来源:51Testing软件测试网采编 字体:大 中 小 | 上一篇 | 下一篇 | 打 ...

  4. ubuntu下的时间设定(硬件时间,系统时间,本地时间)

    问题的来由是在这里: 在cron里设定任务是在凌晨6点执行,检查日志时发现时间总是不对,是在22点左右的时间执行的.研究发现,任务是在本地时间的6点执行了,但不知为什么syslog中的时间都是为utc ...

  5. linux 系统文件类型、系统安装时间、系统启动时间、系统运行时间、设置及显示时间、系统时间和硬件时间

    系统文件类型: 1) $mout 2) df -l:仅列出本地文件系统:-h (--human-readable):-T:文件系统类型 $df -lhf 3) file -s (--special-f ...

  6. Linux的硬件时间、校正Linux系统时间及系统时间调用流程

    第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时.   ...

  7. tomcat时间与系统时间不一致问题

    我在部署应用到centos系统上的tomcat服务器中运行,发现操作系统的时间和tomcat中的访问日志的时间与系统时间不一致,但是查看当前操作系统的时区也是CST时区(中国标准时区). 查看系统的时 ...

  8. java new Date()得到的时间和系统时间不一样

    造成这种问题的原因是:操作系统时区跟JVM的时区不一致. [root@paas244 ~]# timedatectl Local time: Thu 2016-12-29 15:35:44 CST U ...

  9. BIOS时间与系统时间(windows/linux时间同步问题)

    写作动机 双系统是不少人喜欢的方式,但安装双系统之后一般会出现两个系统时间不一样的问题,刚开始用双系统的时候也没怎么在意,就是装上后在网上找找相关解决方法,复制粘贴代码完事儿.但是次数多了就有点烦了, ...

随机推荐

  1. Ajax中传递Json格式的参数

    $.ajax({ type: "post", url: baseUrl+"sys/login", dataType: "json", con ...

  2. Scalaz(52)- scalaz-stream: 并行运算-parallel processing concurrently by merging

    如果scalaz-stream真的是一个实用的数据流编程工具库的话,那它应该能处理同时从多个数据源获取数据以及把数据同时送到多个终点(Sink),最重要的是它应该可以实现高度灵活的多线程运算.但是:我 ...

  3. [moka同学笔记]二、Yii2.0课程笔记(魏曦老师教程)

    一.在标签tags的model中 //使用正则表达式,把标签字符串转换成数组 public static function string2array($tags) { return preg_spli ...

  4. linux下使用forever进行管理

    何为forever:forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用.官方的说明是说:A simple CLI tool for ensuring that a ...

  5. 03Mybatis_mybatis框架原理——执行流程

    mybatis的框架的原理(执行流程).

  6. Grid – 入门必备!简单易懂的响应式设计指南

    如今,人们使用各种各样的移动设备访问网页,设计师们需要去适配不同的屏幕,让用户在都能有最佳的浏览体验.Grid 是一个简单的响应式设计指南,按照这些简单的步骤,你的就能够掌握基础的响应网页设计技巧. ...

  7. 【小贴士】zepto find元素以及ios弹出键盘可能让你很头疼

    前言 在此,我不得不说移动端的兼容问题很多,并且很令人头疼,这不,这个星期又有两个让我逮着了,一个是使用zepto过程中出现的问题,一个是ios虚拟键盘的问题 我这里做一次记录,以免以后忘了,同时希望 ...

  8. Linux下的应用程序性能分析 总结

    Linux下的应用程序性能分析,根据内核程序和应用程序的不同,下文分两类进行描述. 我们侧重的是应用级别的程序,推荐google perf tool/kcachegrind组合 一.和内核有关的工具 ...

  9. 一文让你彻底了解iOS字体相关知识

    写本文的契机主要是把自己整理的关于iOS字体方面的知识不断更新写在这篇博文中,用来自己以后查阅. 一.iOS原生字体展示 在label中选择字体的font,并把font由system改成custom后 ...

  10. sqlite学习1

    Architecture  就像编译器一样,结构分为前端.虚拟机.后端 性能和限制(limitations) 使用B树来做indexes,用B+树来做table.和其他数据库一样 由于不需要鉴权.网 ...