我有一個Flask web應用程序,Python日誌配置是在應用程序啓動時通過dictConfig完成的。用於將特定日誌寫入數據庫的處理程序附加到記錄器'test.module'只有在應用程序啓動時也調用logging.basicConfig(level=logging.DEBUG)
時,對該記錄器所做的日誌才寫入數據庫。否則,不會將日誌寫入數據庫。我知道basicConfig只是將一個streamHandler附加到根記錄器。我認爲這應該是無關緊要的,因爲我不希望root logger做任何事情。爲什麼沒有basicConfig這不起作用?沒有basicConfig的日誌處理程序無法正常工作
我添加了如何在下面啓動記錄器和我的配置。
class DbHandler(logging.Handler):
def __init__(self, level=logging.NOTSET):
logging.Handler.__init__(self, level)
def emit(self, record):
record.message = self.format(record)
log = DbModel()
log.message = record.message
log.save()
LOGGING = {
'version': 1,
'handlers': {
'db_log': {
'level': 'DEBUG',
'class': 'test.handlers.DbHandler',
},
},
'loggers': {
'test.important_module': {
'handlers': [
'db_log'
],
},
}
# logging.basicConfig(level=logging.DEBUG) # Doesnt work without this
logging.config.dictConfig(LOGGING)
logger = logging.getLogger('test.important_module')
logger.info('Making a test')
你能使用的是設置記錄器,以及如何,涉及到的代碼進行實際記錄的代碼?目前爲止你提供的內容有些模糊...... – isedev 2013-02-19 13:39:32
@isedev我現在加了它 – refik 2013-02-19 13:53:44
僅僅從可用性的角度來看,我會重新考慮修改'record.message'作爲副作用。只需直接設置'log.message = self.format(record)'。 – 2013-02-19 14:06:50