Python日志记录。同一项目的不同日志文件

时间:2014-09-08 13:22:02

标签: python logging

我想登录不同的文件。目前,我的所有日​​志都写在同一个文件中。

我有两个档案:

  • extract.py
  • insert.py

extract.py调用insert.py

在我的extract.py中:

import insert
import logging

logging.basicConfig(filename='log/extract.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

logger = logging.getLogger(__name__)

在我的insert.py中:

import logging

logging.basicConfig(filename='log/insert.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

问题是每个日志都是在insert.log中发送的。如何通过extract.py中的extract.py发送日志生成,并通过insert.log中的insert.py生成日志生成?

由于

2 个答案:

答案 0 :(得分:1)

您需要有两个记录器,每个记录器都有自己的文件处理程序。在每个文件:

log= logging.getLogger(__name__)
hdlr = logging.FileHandler(__name__+'.log', mode="w")
log.addHandler(hdlr) 
log.setLevel(logging.DEBUG)

然后在log而不是logging模块

中调用日志记录功能
log.debug("my message")

一般来说,python的文档质量非常好。 advanced tutorial included in the logging documentation涵盖了这一点以及更多内容

答案 1 :(得分:0)

只将它放在你的extract.py中(这可以在python2.7 +和python3.2 +中使用):

import logging
import logging.config

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(levelname)s:%(name)s: %(message)s '
                    '(%(asctime)s; %(filename)s:%(lineno)d)',
            'datefmt': "%Y-%m-%d %H:%M:%S",
        }
    },
    'handlers': {
        'extract_rotate_file': {
            'level': 'DEBUG',
            'formatter': 'standard',
            'class' : 'logging.handlers.RotatingFileHandler',
            'filename' : 'extract.log',
            'encoding': 'utf8',
            'maxBytes': 1024*1024*2, # 2 MB
            'backupCount': 5,
        },
        'insert_rotate_file': {
            'level': 'DEBUG',
            'formatter': 'standard',
            'class' : 'logging.handlers.RotatingFileHandler',
            'filename' : 'insert.log',
            'encoding': 'utf8',
            'maxBytes': 1024*1024*2, # 2 MB
            'backupCount': 5,
        }
    },
    'loggers': {
        'extract': {  # <-- put here name of your logger in extract.py
            'handlers': ['extract_rotate_file'],
            'level': 'DEBUG',
        },
        'insert': {  # <-- put here name of your logger in insert.py
            'handlers': ['insert_rotate_file'],
            'level': 'DEBUG',
        },
    }
}
logging.config.dictConfig(LOGGING)

但是记录器的确切名称,请在上面的代码中查找# <--

Here发布了关于python日志记录的更多细节和示例