2017-07-31 122 views
0

鑑於以下記錄聲明:Python的日誌記錄配置:輸出跟蹤到文件,輸出日誌消息到控制檯

import logging 

... 
def ... 
    try: 
     ... 
    except MyException: 
     ... 
     logger.error("Parsing Error: %s"%(sys.exc_info()[0]),exc_info=True) 

而下面的JSON配置:

"handlers":{ 
    "error_file_handler": { 
     "class": "logging.handlers.RotatingFileHandler", 
     "level": "ERROR", 
     "formatter": "simple", 
     "filename": "../log/errors.log", 
     "maxBytes": 10485760, 
     "backupCount": 20, 
     "encoding": "utf8" 
    }, 
} 

"loggers": { 
    "my_module": { 
     "level": "ERROR", 
     "handlers": ["console"], 
     "propagate": "no" 
    } 
}, 

如何修改這個配置,跟蹤輸出不會輸出到控制檯,而是輸出到錯誤日誌?

而且,在同一時間:日誌消息字符串仍輸出到控制檯?

回答

0

試試這個:

"handlers": { 
    "error_file_handler": { 
     "class": "logging.handlers.RotatingFileHandler", 
     "level": "ERROR", 
     "formatter": "simple", 
     "filename": "../log/errors.log", 
     "maxBytes": 10485760, 
     "backupCount": 20, 
     "encoding": "utf8" 
    }, 
    'console': { 
     'level': 'INFO', 
     'formatter': 'standard', 
     'class': 'logging.StreamHandler' 
    } 
} 

"loggers": { 
    "my_module": { 
     "level": "ERROR", 
     "handlers": ["console", "error_file_handler"], 
     "propagate": "no" 
    } 
} 

變化:

  1. "handlers": ["console", "error_file_handler"]:寫入日誌既文件和控制檯
  2. "handlers": ["error_file_handler"]:寫日誌記錄文件
+0

所以我正在嘗試做什麼被分割輸出:我的自定義消息進入控制檯,並且跟蹤信息進入文件。 – bordeo

+0

我不清楚自定義消息。你的意思是日誌級別? – tuannv562

+0

因此,'logging.error(「我的自定義消息」)將是自定義消息,而'logging.error(「」,exc_info = True)'只會打印出堆棧跟蹤。 如果我寫'logging.error(「我的自定義消息,exc_info = True)',那麼自定義消息和堆棧跟蹤都會輸出到文件和控制檯。 我該如何拆分它以使自定義消息進入控制檯,並且堆棧跟蹤(非常詳細)轉到該文件? – bordeo