Python 日志模块可以';不要加载好的配置
当我的模块a由模块B导入时,我不知道如何使用不同的日志记录配置,但使用另一个日志记录配置。有没有办法解决这个问题 模块A代码:Python 日志模块可以';不要加载好的配置,python,python-3.x,python-logging,Python,Python 3.x,Python Logging,当我的模块a由模块B导入时,我不知道如何使用不同的日志记录配置,但使用另一个日志记录配置。有没有办法解决这个问题 模块A代码: logging.basicConfig(filename="/var/log/ModuleA",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S") log=logging.getLogger(__name__) logging.Format
logging.basicConfig(filename="/var/log/ModuleA",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S")
log=logging.getLogger(__name__)
logging.Formatter.converter = time.gmtime
logging.setLevel(logging.DEBUG)
模块B代码:
import ModuleA
logging.basicConfig(filename="/var/log/ModuleB",format="%(asctime)s %(message)s",datefmt="%d/%m/%Y %H:%M:%S") log=logging.getLogger(__name__)
logging.Formatter.converter = time.gmtime
logging.setLevel(logging.DEBUG)
basicConfig
每个进程只能运行一次(或者,当根记录器没有配置时)
如果希望不同的模块登录到不同的位置,则必须相应地配置它们的记录器,最好在导入模块的应用程序代码中进行配置,而不是在模块本身中进行配置。他们不关心如何定义日志输出
例如,您可以使用配置两个命名记录器,module1
和module2
,以及它们的处理程序和格式化程序:
import logging
from logging.config import dictConfig
dictConfig(
{
"version": 1,
"disable_existing_loggers": False,
"formatters": {"my_format": {"format": "%(asctime)s %(message)s", "datefmt": "%d/%m/%Y %H:%M:%S",},},
"handlers": {
"file_a": {"level": "INFO", "class": "logging.FileHandler", "filename": "a.log", "formatter": "my_format",},
"file_b": {"level": "INFO", "class": "logging.FileHandler", "filename": "b.log", "formatter": "my_format",},
},
"loggers": {
"module1": {"handlers": ["file_a"], "level": "INFO", "propagate": False,},
"module2": {"handlers": ["file_b"], "level": "INFO", "propagate": False,},
},
}
)
然后,假装它们在模块1
和模块2
中:
log1 = logging.getLogger("module1")
log1.info("Hello")
你会在a.log
中看到Hello
,在b.log
中看到World
log2 = logging.getLogger("module2")
log2.info("World")