2017-08-15 92 views
-1

我有多個python文件,我需要將多個python文件記錄到一個公共日誌文件中。我不想使用格式或json字典的日誌配置文件。每個python文件都被導入到主python文件kickstart.py中,並且它們都從kickstart.py中調用。我想將來自主python腳本調用的各種python模塊的所有消息記錄到一個日誌文件中。 請建議方法做到這一點。我經歷了python食譜,但這沒有幫助。我對此很新。在Python中將多個python文件記錄到單個日誌文件中

謝謝

+0

你看了[有關記錄的文檔(https://docs.python.org/2/library/logging.html)? – agtoever

+0

我閱讀了文檔,但我不確定它爲什麼可以使用記錄器(somename),但不能與記錄器(__ name__) https://docs.python.org/2/howto/logging-cookbook.html示例 –

回答

0

您可以使用logging模塊做到這一點。在你的一個基本模塊中定義這個函數,並在你想記錄的每個模塊中調用它。

import logging 
def get_logger(name): 
    log_format = '%(asctime)s %(name)8s %(levelname)5s %(message)s' 
    logging.basicConfig(level=logging.DEBUG, 
         format=log_format, 
         filename='dev.log', 
         filemode='w') 
    console = logging.StreamHandler() 
    console.setLevel(logging.DEBUG) 
    console.setFormatter(logging.Formatter(log_format)) 
    logging.getLogger(name).addHandler(console) 
    return logging.getLogger(name) 

然後從每一個模塊你想從登錄,打電話與要記錄器名稱此功能,您的所有模塊,將打印由filename參數定義相同的日誌文件。

<base.py> 
logger = get_logger('base') 
logger.info('testing logger from module base') 

<module2.py> 
logger = get_logger('module2') 
logger.info('testing logger from module module2') 

<dev.log> 
2017-08-11 00:34:00,361  base INFO testing logger from module base 
2017-08-11 00:34:00,361  module2 INFO testing logger from module module2 

logging.basicConfig()