2013-05-08 34 views
1

我想在登錄到控制檯,但然後保留信息,同時記錄到文件Python記錄 - 使用過濾器除去信息

這裏刪除了一些信息是一個基本的例子:

import logging 
import sys 

class MyFilter(logging.Filter): 
    def filter(self, record): 
     record.msg = record.msg.replace("test", "") 
     return True 

logger = logging.getLogger("mylogger") 
logger.setLevel(logging.DEBUG) 

console = logging.StreamHandler(sys.stdout) 
console.setLevel("INFO") 
logger.addHandler(console) 

logfile = logging.FileHandler("log.txt", 'w') 
logfile.setLevel("ERROR") 
logger.addHandler(logfile) 

filt = MyFilter() 
console.addFilter(filt) 

logger.info("test one") 
logger.error("test two") 

我倒是希望看到控制檯

one 
two 

,然後在日誌文件中

test two 

,但它實際上只是

two 

我假設編輯的LogRecord是什麼導致這一點。 有沒有一種方法可以實現我想要的或者我試圖以這種方式不可能實現的目標?

回答

2

我想你需要的是一個logging.Formatter

class MyFormatter(logging.Formatter): 
    def format(self, record): 
     return record.msg.replace("test", "") 

#... 
console.setFormatter(MyFormatter()) 
#... 
+0

謝謝,這是它 – Seamus 2013-05-08 22:07:49