澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2020-05-01 05:58 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

python多进程写日志解决方案,的日志输出

于是乎,轻巧搜索了下,“歪果仁”给出了如下湮灭措施:

Log4j 输出的日记中时间比系统时间少了8时辰的消除情势,log4j日志文件再度输出,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

有一篇博客讲了那么些主题素材:

不过依据她的格局,未有效果与利益。

 

案由深入分析,eclipse 输出的日子是没错,那么JVM的时区设置相应是没有错。系统的光阴是对的,那么系统时区也应有是不曾难题的。

那么难点大概是 tomcat 获取时区失利,所以采用了私下认可的时区,所以可香岛时间相差了 8 个小时,衰亡方法,

在 C:apache-tomcat-8.0.33bin 下找到 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 中从不起成效。

 

  1. 首个难题: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 就行了。

输出的日记中时间比系统时间少了8时辰的解决方法,log4j日志文件再次输出,log4j日志文件

  1. 首先个难题:时间少了8钟头 Log4j 输出的...

** 在windows上使用ConcurrentLogHandler的问题 **
暂不知什么原因,windows上接受该handler会出错,程序卡死在写日记之处。调节和测量试验追踪到该Handler内部,是有个别锁的标题。但该难题在标准景况Linux中不会设有,也没去根究。不经常的解决措施是在日记伊始化的地点决断当前系统,是windows则运用古板的日志handler。
代码如下:

更新到Xcode 8的校友应该都境遇了这么些难点:用Xcode 8运维项目,日志会疯狂的刷,就如上面这种图一律:

_code_log_file = os.path.join(BASE_DIR, 'logs', 'code.log')
_code_log_handler = TimedRotatingFileHandler(_code_log_file, when="D")
_code_log_formatter = logging.Formatter('%(levelname)s %(pathname)s->func:%(funcName)s line:%(lineno)d %(message)s %(asctime)s')
_code_log_handler.setFormatter(_code_log_formatter)# 此处设置logger名称,否则默认的会和tornado的logger相同而使得下方设置的错误等级被轻质更新为info
code_log = logging.getLogger('code-log')
code_log.setLevel(logging.INFO)
code_log.addHandler(_code_log_handler)

至于那些难题,推荐一篇小说供我们查阅《活动追踪》。

对此如此的难题,平时常有两种方案:

图片 1日志输出

import logging
from setting import BASE_DIR
import os
from cloghandler import ConcurrentRotatingFileHandler as LogHandler
import platform
import json


# 不知道为毛windows上ConcurrentRotatingFileHandler这个handler会有导致程序卡死,linux上无问题
# 暂时采用这种方法解决windows上因卡死导致的调试不方便问题
if str(platform.system()) == "Windows":
    from logging.handlers import RotatingFileHandler as LogHandler


# -------------------------------运行日志(代码运行记录)-------------------------------
_code_log_file = os.path.join(BASE_DIR, 'logs', 'code.log')

_code_log_handler = LogHandler(_code_log_file, "a", 20*1024*1024, 50)
_code_log_formatter = logging.Formatter('%(levelname)s %(pathname)s->func:%(funcName)s '
                                        'line:%(lineno)d %(message)s %(asctime)s')
_code_log_handler.setFormatter(_code_log_formatter)
# 此处设置logger名称,否则默认的会和tornado的logger相同而使得下方设置的错误等级被更新为info
code_log = logging.getLogger('code-log')
code_log.setLevel(logging.INFO)
code_log.addHandler(_code_log_handler)

本文由澳门威利斯人发布于办公软件,转载请注明出处:python多进程写日志解决方案,的日志输出

关键词: 澳门威利斯人 python 烦人 屏蔽 日志