问题描述
我在 Python 中使用日志记录模块,我希望它在每次启动我的应用程序时创建一个新的日志文件.应该轮换较旧的日志文件(例如:logfile.txt -> logfile1.txt 等).
I'm using the logging module in Python and I would like it to create a new logfile each time my application is started. The older logfiles shoud be rotated (eg: logfile.txt -> logfile1.txt, etc).
我已经找到了:
http://docs.python.org/library/logging.html
BaseRotatingHandler 是基类对于将日志文件轮换到的处理程序某一点.这并不意味着直接实例化.相反,使用RotatingFileHandler 或TimedRotatingFileHandler.
BaseRotatingHandler is the base class for handlers that rotate log files at a certain point. It is not meant to be instantiated directly. Instead, use RotatingFileHandler or TimedRotatingFileHandler.
RotatingFileHandler 以预定大小进行翻转,而 TimedRotatingFileHandler 根据时间和间隔的乘积进行翻转.两者都不是我想要的,我希望在我的应用程序启动时立即进行轮换.
The RotatingFileHandler does a rollover at a predetermined size and the TimedRotatingFileHandler does a rollover based on the product of when and interval. Both are not what I want, I want the rotation to happen immediately when my application starts.
推荐答案
我可能用RotatingFileHandler不用maxBytes就够了,然后调用doRollover() 在应用程序启动时.
I might be enough to use RotatingFileHandler without maxBytes, then call doRollover() on application start.
是的,似乎工作正常.下面的代码将在每个应用程序运行时创建一个新的日志文件,并为日志开始和关闭时间添加时间戳.运行它将打印可用日志文件的列表.您可以检查它们以检查正确的行为.改编自 Python 文档示例:
Yup, seems to work fine. The code below will create a new log file on each application run, with added timestamps for log start and close times. Running it will print the list of available log files. You can inspect them to check correct behavior. Adapted from the Python docs example:
import os
import glob
import logging
import logging.handlers
import time
LOG_FILENAME = 'logging_rotatingfile_example.out'
# Set up a specific logger with our desired output level
my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)
# Check if log exists and should therefore be rolled
needRoll = os.path.isfile(LOG_FILENAME)
# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, backupCount=50)
my_logger.addHandler(handler)
# This is a stale log, so roll it
if needRoll:
# Add timestamp
my_logger.debug('
---------
Log closed on %s.
---------
' % time.asctime())
# Roll over on application start
my_logger.handlers[0].doRollover()
# Add timestamp
my_logger.debug('
---------
Log started on %s.
---------
' % time.asctime())
# Log some messages
for i in xrange(20):
my_logger.debug('i = %d' % i)
# See what files are created
logfiles = glob.glob('%s*' % LOG_FILENAME)
print '
'.join(logfiles)
这篇关于每次启动应用程序时轮换日志文件(Python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)