gpt4 book ai didi

Python日志记录: logging config file with changing save location

转载 作者:太空宇宙 更新时间:2023-11-03 19:11:00 25 4
gpt4 key购买 nike

假设我有以下配置日志文件:

[loggers]
keys=root,seeker,event

[handlers]
keys=consoleHandler,seekerFileHandler,eventFileHandler

[formatters]
keys=consoleFormatter,logFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler,seekerFileHandler,eventFileHandler

[logger_seeker]
level=DEBUG
handlers=consoleHandler,seekerFileHandler
qualname=seeker
propagate=0

[logger_event]
level=DEBUG
handlers=consoleHandler,eventFileHandler
qualname=event
propagate=0

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

[handler_seekerFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('seeker.log','a')

[handler_eventFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('event.log','a')

[formatter_consoleFormatter]
format=%(asctime)s - thread:%(thread)d - %(name)s - %(levelname)s | %(message)s
datefmt=%m/%d/%Y %X

[formatter_logFormatter]
format=%(asctime)s | %(message)s
datefmt=%m/%d/%Y %X

通常我会:

import logging
from logging.config import fileConfig
from os import getcwd

fileConfig(''.join([getcwd(),'/logging.conf']))
event_logger = logging.getLogger("event")
seeker_logger = logging.getLogger("seeker")

处理每个记录器。但是,我倾向于在两个独立的平台上运行该软件:Windows 和 Linux,因此如果它们各自将其保存在“公共(public)”位置,那就太好了。我正在寻找的是这样的:

from sys import platform
if 'win' in platform:
#alter the save path to this location
if 'linux' in platform:
#alter save path to this location

但我不知道如何使用配置文件来实现它,有什么想法吗?

最佳答案

您有 2 个选择。

  1. 使用具有不同路径的 logging-linux.conf 文件和 logging-win.conf 文件,并将它们加载到平台测试中。

  2. 不要使用配置文件,而是将记录器的创建委托(delegate)给您自己的模块,并在创建 FileHandler 实例时进行平台测试。

采用的解决方案取决于代码的复杂性。如果您正在构建图书馆,请查看此页面:http://docs.python.org/howto/logging.html#configuring-logging-for-a-library

关于Python日志记录: logging config file with changing save location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com