我想登录不同的文件。目前,我的所有日志都写在同一个文件中。
我有两个档案:
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生成日志生成?
由于
答案 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日志记录的更多细节和示例