一千萬個為什麽

搜索

Python記錄器動態文件名


我想以這樣的方式配置我的Python記錄器,以便記錄器的每個實例都應該登錄一個與記錄器本身名稱相同的文件。

例如。:

log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log

log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log

log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log

我想保持它的通用性,不想硬編碼我可以擁有的所有記錄器名稱。那可能嗎?

最佳答案

如何簡單地將處理程序代碼包裝在一個函數中:

import os
def myLogger(name):
    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    handler = logging.FileHandler(os.path.join('/some/path/', name + '.log'), 'w')
    logger.addHandler(handler)
    return logger

log_hm = myLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log

轉載註明原文: Python記錄器動態文件名

猜你喜歡