从多个python文件登录到Python中的单个日志文件

Nom*_*der 5 python logging python-2.7

我有多个python文件,我需要从多个python文件登录到单个公共日志文件。我不想使用日志配置文件来格式化或json字典。每个python文件都被导入到主python文件kickstart.py中,它们都从kickstart.py调用。我想将来自各种python模块的所有消息(从主python脚本调用)记录到单个日志文件中。请建议使用方法。我通过了python食谱,但这对我没有帮助。

谢谢

Che*_* A. 5

您可以使用logging模块来完成。在您的一个基本模块中定义此函数,然后在您要记录某些内容的每个模块中调用它。

import logging
def get_logger(name):
    log_format = '%(asctime)s  %(name)8s  %(levelname)5s  %(message)s'
    logging.basicConfig(level=logging.DEBUG,
                        format=log_format,
                        filename='dev.log',
                        filemode='w')
    console = logging.StreamHandler()
    console.setLevel(logging.DEBUG)
    console.setFormatter(logging.Formatter(log_format))
    logging.getLogger(name).addHandler(console)
    return logging.getLogger(name)
Run Code Online (Sandbox Code Playgroud)

然后从要记录的每个模块中,使用所需的记录器名称调用此函数,所有模块将打印到该filename参数定义的相同日志文件中。

<base.py>
logger = get_logger('base')
logger.info('testing logger from module base')

<module2.py>
logger = get_logger('module2')
logger.info('testing logger from module module2')

<dev.log>
2017-08-11 00:34:00,361     base   INFO  testing logger from module base
2017-08-11 00:34:00,361     module2   INFO  testing logger from module module2
Run Code Online (Sandbox Code Playgroud)

logging.basicConfig()