2012-03-10 21 views
0

我需要編寫一個登錄到文件(使用記錄模塊)的函數,並且同時在控制檯上打印相同的內容。Python:登錄到文件並執行sys.stdout

我所擁有的是:

def printScreenAndLog(msg): 
    log = logging.getLogger() 
    log.info(msg) 
    now = str(datetime.datetime.now()) 
    print now,"%s" % msg 

def main(): 
    options, args = usage() 
    log = logging.getLogger("CMDR") 

    log.setLevel(logging.DEBUG) 
    fh = logging.FileHandler('cmdr.log') 
    fh.setLevel(logging.DEBUG) 
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 
    fh.setFormatter(formatter) 
    log.addHandler(fh) 

    printScreenAndLog("Testing") 

if __name__ == "__main__": 
    main() 

回答

0

做你嘗試設置日誌記錄級別的信息,而不是調試?
或在printScreenAndLog函數中使用log.debug(msg)?

0

這個功能應該做你需要什麼:

def configure_logging(): 
    log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' 

    # log to stdout 
    logging.basicConfig(level=logging.DEBUG, format=log_format) 

    # also log to file 
    formatter = logging.Formatter(log_format) 
    handler = logging.FileHandler("cmdr.log") 
    handler.setLevel(logging.DEBUG) 
    handler.setFormatter(formatter) 
    logging.getLogger('').addHandler(handler)