我有一个django驱动的网站,我使用标准的日志模块来跟踪web活动。
日志通过RotatingFileHandler完成,RotatingFileHandler配置了10个日志文件,每个文件1000000字节。日志系统可以工作,但这是我得到的日志文件:
-rw-r--r-- 1 apache apache 83 Jul 23 13:30 hr.log
-rw-r--r-- 1 apache apache 446276 Jul 23 13:03 hr.log.1
-rw-r--r-- 1 apache apache 999910 Jul 23 06:00 hr.log.10
-rw-r--r-- 1 apache apache 415 Jul 23 16:24 hr.log.2
-rw-r--r-- 1 apache apache 479636 Jul 23 16:03 hr.log.3
-rw-r--r-- 1 apache apache 710 Jul 23 15:30 hr.log.4
-rw-r--r-- 1 apache apache 892179 Jul 23 15:03 hr.log.5
-rw-r--r-- 1 apache apache 166 Jul 23 14:30 hr.log.6
-rw-r--r-- 1 apache apache 890769 Jul 23 14:03 hr.log.7
-rw-r--r-- 1 apache apache 999977 Jul 23 12:30 hr.log.8
-rw-r--r-- 1 apache apache 999961 Jul 23 08:01 hr.log.9
正如你所看到的,这里一团糟。最后一个日志已写入文件hr.log.2(7月23日16:24)而不是hr.log,并且logging documentation声明:
[…]例如,备份计数为5,基本文件名为app.log,则会得到app.log、app.log.1、app.log.2,直至app.log.5。要写入的文件始终是app.log。填充此文件后,将其关闭并重命名为app.log.1,如果存在app.log.1、app.log.2等文件,则分别重命名为app.log.2、app.log.3等。
我做错什么了?
我的日志配置文件是:
logger.conf文件:
[loggers]
keys=root
[handlers]
keys=fileHandler
[formatters]
keys=simple
#--------------------------------------------------------------------
# Formatters
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
#--------------------------------------------------------------------
# Handlers
[handler_fileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simple
args=("/data/django/hr/hr.log",'a',1000000,10)
#--------------------------------------------------------------------
# Loggers
[logger_root]
level=DEBUG
handlers=fileHandler
我要设置日志系统的python模块是:
日志程序.py
import os, logging
# Load config file
logger_config_file = \
os.path.join(os.path.abspath(os.path.dirname(__file__)), 'logger.conf')
logging.config.fileConfig(logger_config_file)
# Create logger
logger = logging.getLogger('hr_Logger')
# Log start message
logger.info("Logging system started")
然后,在views.py的顶部,我有:
import logging
from hr import logger
log = logging.getLogger('hr.views')
log.info('Load hr.views')
[...]
当你的代码运行多个进程时,我发现了这种行为。
不幸的是,没有完美的选择。
你可以采纳的一些想法是:
谷歌给出了这个答案:
http://bytes.com/topic/python/answers/643884-rotatingfilehandler-bugs-errors-general-logging-question#post2552392
是不是有多个进程在运行记录器?可能有多个应用程序登录到同一个文件?
或许这也值得考虑http://pypi.python.org/pypi/ConcurrentLogHandler/0.8.3
相关问题 更多 >
编程相关推荐