我正在尝试建立一个环境,在其中我可以登录到多个文件而又不增加太多复杂性。当前设置概述如下。这样做的方便之处在于,我可以在启动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__)