如何从脚本动态设置我的日志文件名?

时间:2015-10-16 20:16:24

标签: python python-2.7 logging

我创建了一个logging.conf文件,该文件适用于一个进程。它会在正确的文件中正确记录所有内容:

[loggers]
keys=root

[logger_root]
handlers=screen,file
level=DEBUG

[formatters]
keys=simple,complex

[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s

[handlers]
keys=file,screen

[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=7
formatter=complex
level=DEBUG
args=('../logs/my_log.log',)

[handler_screen]
class=StreamHandler
formatter=simple
level=DEBUG
args=(sys.stdout,)

这就是我如何在我的脚本中获取我的记录器对象:

# Create logger
logging.config.fileConfig('../logging.conf')
logger = logging.getLogger()

问题是 - 现在我有多个进程使用相同的脚本,而 都使用相同的日志文件 ,这是导致并发错误的原因。 如何从脚本中设置我的日志文件名?有一种方法可以动态设置args=('../logs/my_log.log',)的{​​{1}}属性吗?

1 个答案:

答案 0 :(得分:0)

您可以在脚本

中的运行时创建文件处理程序
filehandler = logging.FileHandler("process1.log")
filehandler.setFormatter( ... )
logger.addHandler(filehandler)

有关详细文档,请参阅https://docs.python.org/2/howto/logging.html#logging-advanced-tutorial