2016-04-22 95 views
0

注意我知道this answer但這不適合我,我希望有一個完整的,獨立的工作示例。Python中的基本日誌記錄dictConfig

我想在Python(2.7)

我的理解是basicConfig僅僅設置了根記錄器與dictConfig更換logging.basicConfig:所以我試圖做的dictConfig相同。也就是說,用一個處理程序設置根記錄器,然後我的應用程序中的所有記錄器將傳播到根記錄器。

以下代碼片段缺少什麼?行爲是創建日誌文件,但沒有輸出。 (我試過設置水平的各種連擊,它似乎並沒有幫助)

import logging 
log_dict = { 
    'loggers': { 
     'root': { 
      'handlers': ['file_handler'] 
     } 
    }, 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'file_handler': { 
      'filename': 'c:/mylogfile.log', 
      'class': 'logging.FileHandler' 
     } 
    } 
} 

logging.config.dictConfig(log_dict) 
logging.info('THIS IS A TEST') 
logging.shutdown() 
exit() 
+0

可能重複的[python:dict的完整示例爲logging.config.dictConfig?](http://stackoverflow.com/questions/7507825/python-complete-example-of-dict-for-logging- config-dictconfig) – user3159253

+0

不是重複的,因爲鏈接的票證不是一個完整的,自包含的工作示例,並且在該示例中使用該詞典對我不起作用。 – Zero

回答

1

下面的代碼工作完美的我:

import logging 
import logging.config 

log_dict = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'standard': { 
      'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' 
     }, 
    }, 
    'handlers': { 
     'default': { 
      'level': 'INFO', 
      'formatter': 'standard', 
      'class': 'logging.StreamHandler', 
     }, 
     'file_handler': { 
      'level': 'INFO', 
      'filename': '/tmp/mylogfile.log', 
      'class': 'logging.FileHandler', 
      'formatter': 'standard' 
     } 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['file_handler'], 
      'level': 'INFO', 
      'propagate': True 
     }, 
    } 
} 
logging.config.dictConfig(log_dict) 
logging.info("test") 

事實上,它是基於提到的答案上述

3

有一個問題與您發佈配置兩件事情:

  1. 與一個名稱的記錄器不是根記錄器。根記錄器具有''的名稱,並且在一般使用'root'條目'loggers'配置更好配置,如在記錄文檔的this部分描述:

記錄器 - 中的相應值將是...

...

root - 這將是根記錄器的配置。 ...

  • 您還沒有指定一個日誌級別,因此它保持在中WARNING默認級別,這意味着info()消息將不會示出。