我已经阅读了一些关于此的帖子,但我仍然感到困惑.我有这个日志设置:
import logging
class MongoHandler(logging.Handler):
def __init__(self):
logging.Handler.__init__(self)
from pymongo import Connection
self.db = Connection('db_server').db_name
def emit(self, record):
try:
self.db.Logging.save(record.__dict__)
except:
print 'Logging Error: Unable to save log entry to db'
mh = MongoHandler()
sh = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(threadName)s - %(levelname)s - %(message)s')
sh.setFormatter(formatter)
log = logging.getLogger('DeviceMonitor_%s' % hostname)
log.addHandler(mh)
log.addHandler(sh)
log.setLevel(logging.INFO)
Run Code Online (Sandbox Code Playgroud)
我希望能够为StreamHandler和MongoHandler设置不同的级别.这可能还是我需要第二个Logger obj?
是否可以有多个日志处理程序在 python 日志记录配置中引用同一个日志文件。handler_two我可以通过向对象添加一个处理程序来使其工作handlers,但这似乎是一个样板文件。
"handler_two": {
"level": "DEBUG",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "verbose",
"filename": "{}/abc.log".format(log_folder),
"when": "midnight",
"backupCount": 10,
"encoding": "utf8"
},
Run Code Online (Sandbox Code Playgroud)
日志记录.conf -
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "%(asctime)s %(name)s %(levelname)s (PID: %(process)d) %(message)s",
"datefmt": "%d/%m/%Y %I:%M:%S %p %Z"
},
"simple": {
"format": "%(asctime)s %(name)s %(levelname)s > %(message)s"
}
},
"handlers": {
"handler_one": {
"level": "DEBUG",
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "verbose",
"filename": "{}/abc.log".format(log_folder),
"when": "midnight",
"backupCount": 10,
"encoding": "utf8"
},
"error": {
"level": "ERROR", …Run Code Online (Sandbox Code Playgroud)