python - 如何使用 python 的 fileConfig 进行日志记录并配置日志文件文件名

标签 python file logging console

我有一个用于记录到控制台的日志配置文件和一个具有不同格式和级别的文件。在我的 python 脚本中,我可以加载这个配置,基本上控制台和文件输出都可以。

我在config文件中设置文件名如下图。

是否可以在 python 脚本本身中设置该文件名?

python 代码:

# set up logging
logging.config.fileConfig(loginipath)
logger = logging.getLogger('sLogger')

# log something
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

日志记录配置文件:

[loggers]
keys=root,sLogger

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=fileFormatter,consoleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_sLogger]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=sLogger
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=WARNING
formatter=consoleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('logfile.log',)

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

[formatter_consoleFormatter]
format=%(levelname)s - %(message)s
datefmt=

最佳答案

像这样更改您的 handler_fileHandler 部分:

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('%(logfilename)s',)

然后在 fileConfig 调用中添加一个 defaults 参数

logging.config.fileConfig(loginipath, defaults={'logfilename': '/var/log/mylog.log'})

关于python - 如何使用 python 的 fileConfig 进行日志记录并配置日志文件文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649664/

相关文章:

python - 列表理解、映射和 numpy.vectorize 性能

python - gevent和tornado结合如何提高性能?

Python:快速和肮脏的数据类型(DTO)

java - 日志记录不会显示调用方法或行号

django - 为什么 Django 向我发送带有我的服务器 IP 的无效 HTTP_HOST header ?

Python MySQLdb 插入主键

c++ - 如何将 C++ vector 导出到 excel?

C - 为什么 fopen(filename, "r") 之后 fp == NULL true?

c++ - OPENFILENAME 打开对话框

php - laravel 5.2 不同任务的自定义日志文件