2017-10-05 133 views
0

登錄使用配置文件,我在Python記錄寫道功能:在蟒蛇

def go_logger(name_of_file): 
    formatter = logging.Formatter('%(asctime)s - %(message)s') 
    logging.basicConfig(filemode='a', datefmt='%m-%d-%Y') 
    logger = logging.getLogger(name_of_file) 
    logger.setLevel(logging.DEBUG) 
    handler = closehandler.ClosingHandler(os.path.join('/path/to/logs', filename), mode='a') 
    handler.setLevel(logging.DEBUG) 
    handler.setFormatter(formatter) 
    logger.addHandler(handler) 
    return logger 

和它的作品。我可以調用這個函數,像這樣:

LOG = host_utils.go_logger('wwe.log') 

你如何看到,我可以調用我的函數寫入不同的日誌文件。 但我想使用配置文件。使用配置(從蟒蛇的官方文檔):

logging.config.fileConfig(fname, defaults=None, disable_existing_loggers=True) 

好吧,fname這是配置的名字,但我怎麼可以使用佔位符文件日誌的名字嗎?

寫作的一部分,從配置文件:

[handler_handler] 
class=handlers.FileHandler 
level=DEBUG 
formatter=Formatter 
args=('wwe.log','a') 

你看,args=('wwe.log','a')。我怎樣才能把佔位符,而不是文件日誌的名稱?我再說一遍,我想調用函數,就像我跟我的方法的幫助下做了:

LOG = host_utils.go_logger('wwe.log')

但使用的配置文件。你能指導我什麼?

回答

0

您可以使用defaults詞典的鍵作爲配置文件中的佔位符。

由於您的其他問題使用佔位,我想你想通了這一點,但這裏是從您的其他問題一個完整的,可運行例如,如果別人有同樣的問題:

import logging.config 


def get_logger(logfilename): 
    config_file = ('config.txt') 
    logging.config.fileConfig(config_file, defaults={'logfilename': logfilename}, disable_existing_loggers=False) 
    logger = logging.getLogger("main") 
    return logger 

logger = get_logger('scratch.log') 
logger.info('Hello, World!') 

這裏的配置文件與logfilename佔位符:

[loggers] 
keys=root 

[handlers] 
keys=fileHandler 

[formatters] 
keys=Formatter 

[logger_root] 
level=DEBUG 
handlers=fileHandler 
qualname=main 

[handler_fileHandler] 
class=FileHandler 
level=DEBUG 
formatter=Formatter 
args=('%(logfilename)s', 'a', 'utf8') 

[formatter_Formatter] 
format=%(asctime)s - %(levelname)s - %(message)s 
datefmt="%Y-%m-%d %H:%M:%S"