Python模块化日志记录到不同文件

时间:2020-07-01 11:12:03

标签: python python-3.x logging

我正在尝试建立一个环境,在其中我可以登录到多个文件而又不增加太多复杂性。当前设置概述如下。这样做的方便之处在于,我可以在启动logger = logging.getLogger(__name__)之后随时随地调用set_logger(),它只是在“全局”下工作而无需任何额外的代码。

现在让我们说我想拥有一个单独的文件,该文件仅记录与安全性相关的消息,而又不会增加过多的复杂性?例如。可以从模块内调用的logger2 = logging.getLogger(__name__, file='security.log')之类的东西是理想的。有可能吗?我发现所有的Stack Overflow答案基本上都建议必须在每个模块中构造一个新的记录器。

# settings.py
LOG_LEVEL = logging.INFO
LOG_FORMAT = '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s():%(lineno)d] – %(message)s'
LOG_FILE = 'orchestrator.log'
LOG_PATH = os.path.join(os.getcwd(), 'logs', LOG_FILE)
LOG_BACKUPS = 21

def set_logger(debug: bool = None):
    _LOG_LEVEL = logging.DEBUG if debug else LOG_LEVEL
    logging.basicConfig(
        format=LOG_FORMAT,
        datefmt='%Y/%m/%d %H:%M:%S',
        level=_LOG_LEVEL,
        handlers=[
            logging.StreamHandler(),
            logging.handlers.TimedRotatingFileHandler(
                LOG_PATH,
                encoding='utf-8',
                when="d",
                interval=1,
                backupCount=LOG_BACKUPS
            )
        ]
    )
#main.py
import settings
settings.set_logger()
#module.py
import logging
logger = logging.getLogger(__name__)

0 个答案:

没有答案