日志未在python文件中打印

2024-10-06 08:54:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python中的logger模块打印日志。 以下是我保存在文件顶部的代码。在

if __name__ == '__main__':
    LOG_FILENAME = '/home/akash/exdion-pdf-extracter/doc/epod.log'
    logging.basicConfig(
        filename=LOG_FILENAME,
        level=logging.DEBUG,
        )

不同的文件之间有函数调用。我使用下面的行在记录器中显示一行。在

^{pr2}$

上面类似的logger函数有多个实例。但我无法接收指定文件中的记录器输出。代码和文件非常庞大。但是,在日志文件中打印的代码会产生一些错误。在


Tags: 模块文件代码nameloghomeifpdf
2条回答

main命名空间之外使用以下代码位。这样,您就定义了一个记录器,并将日志文件创建为全局文件,您可以在代码中的任何位置调用该记录器。下面的记录器代码位是我通常的编码方式。在

logfile = '<your_file_name>.log'
if(os.path.isfile(logfile)):
        os.remove(logfile)

file_handler = logging.FileHandler(logfile)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter(
        '%(asctime)s %(pathname)s [%(process)d]: %(levelname)s:: %(message)s'))

logger = logging.getLogger('wbs-server-log')
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)

问题可能是您必须初始化if __name__ == '__main__'块上方的日志记录。这样,当您将此作为模块导入时,日志记录将被初始化。在

初始化日志的建议:

import logging 

log = logging.getLogger(PACKAGE_NAME)

stream_handler = logging.StreamHandler(stream=open(LOG_FILE_NAME, 'a'))
stream_handler.setLevel(logging.DEBUG)
log.addHandler(stream_handler)

log.debug('your message here')

在此之后,您可以使用logging.Formatter调整日志消息格式。在

相关问题 更多 >