2017-12-13 3 views
0

私は3つのストリームにロギングモジュールを使用してのpython(2.7)スクリプトからの私の出力を記録したい:のpythonロギングモジュール - ターミナル、標準出力、標準エラー出力

  1. ターミナル/標準出力(ルートロガー)
  2. へ唯一の警告およびエラーメッセージ(stderrに同様のエラーロガー、)

ロガー2.と3.必要性を含むログ・ファイルにすべてのメッセージ(stdoutに似たフルロガー、)

  • を含むログ・ファイルへの
  • 回転ファイルにするHandlers(maxBytes:1024、backupCount:3)、しばらくして古い履歴ログファイルを上書きします。

    以下の設定では、ログを目的の形式でターミナルに書き込み、stdout.logファイルとstderr.logファイルも作成しますが、両方のファイルが空に見えます。

    ログファイルに正しく入力するためのヒントはありますか?


    このテストスクリプト

    test_logger.py

    import logging.config 
    
    logging.config.fileConfig('logging.conf') 
    
    logging.debug("DEBUG MESSAGE") 
    logging.info("INFO MESSAGE") 
    logging.warning("WARNING MESSAGE") 
    logging.error("ERROR MESSAGE") 
    
    a = [] 
    try : 
        b = a[0] 
    except : 
        logging.exception("EXCEPTION MESSAGE") 
    # end try 
    

    これは

    [loggers] 
    keys=root,fullLogger,errorLogger 
    
    [handlers] 
    keys=rootHandler,fullHandler,errorHandler 
    
    [formatters] 
    keys=simpleFormatter 
    
    [logger_root] 
    level=DEBUG 
    handlers=rootHandler 
    propagate=1 
    
    [logger_fullLogger] 
    level=DEBUG 
    handlers=fullHandler 
    qualname=fullLogger 
    propagate=1 
    
    [logger_errorLogger] 
    level=WARNING 
    handlers=errorHandler 
    qualname=errorLogger 
    propagate=1 
    
    [handler_rootHandler] 
    class=StreamHandler 
    level=DEBUG 
    formatter=simpleFormatter 
    args=(sys.stdout,) 
    
    [handler_fullHandler] 
    class=logging.handlers.RotatingFileHandler 
    level=DEBUG 
    formatter=simpleFormatter 
    args=('stdout.log','w',1024,3) 
    
    [handler_errorHandler] 
    class=logging.handlers.RotatingFileHandler 
    level=WARNING 
    formatter=simpleFormatter 
    args=('stderr.log','w',1024,3) 
    
    [formatter_simpleFormatter] 
    format=[%(asctime)s.%(msecs)03d] %(levelname)s :: %(message)s 
    datefmt=%Y-%m-%d %H:%M:%S 
    
    logging.confロガー

    ための構成であります


    私は、次の出力を期待:

    ターミナル

    [2017-12-13 15:18:59.265] DEBUG :: DEBUG MESSAGE 
    [2017-12-13 15:18:59.265] INFO :: INFO MESSAGE 
    [2017-12-13 15:18:59.265] WARNING :: WARNING MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: ERROR MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: EXCEPTION MESSAGE 
    Traceback (most recent call last): 
        File "C:\path\test_logger2.py", line 12, in <module> 
        b = a[0] 
    IndexError: list index out of range 
    

    あるstdout.log

    [2017-12-13 15:18:59.265] DEBUG :: DEBUG MESSAGE 
    [2017-12-13 15:18:59.265] INFO :: INFO MESSAGE 
    [2017-12-13 15:18:59.265] WARNING :: WARNING MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: ERROR MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: EXCEPTION MESSAGE 
    Traceback (most recent call last): 
        File "C:\path\test_logger2.py", line 12, in <module> 
        b = a[0] 
    IndexError: list index out of range 
    

    たSTDERR.log

    [2017-12-13 15:18:59.265] WARNING :: WARNING MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: ERROR MESSAGE 
    [2017-12-13 15:18:59.265] ERROR :: EXCEPTION MESSAGE 
    Traceback (most recent call last): 
        File "C:\path\test_logger2.py", line 12, in <module> 
        b = a[0] 
    IndexError: list index out of range 
    
  • +0

    解決策が見つかりました – HeXor

    答えて

    1

    ワンました3つのハンドラを1つのルートロガーの下で組み合わせる:

    [loggers] 
    keys=root 
    
    [handlers] 
    keys=rootHandler,fullHandler,errorHandler 
    
    [formatters] 
    keys=simpleFormatter 
    
    [logger_root] 
    level=NOTSET 
    handlers=rootHandler,fullHandler,errorHandler 
    
    ##### TERMINAL HANDLER ##### 
    # Setup for output to terminal 
    # level=DEBUG : Logging ALL messages 
    
    [handler_rootHandler] 
    class=logging.StreamHandler 
    level=DEBUG 
    formatter=simpleFormatter 
    args=tuple() 
    
    ##### STDOUT HANDLER ##### 
    # Setup for output to stdout.log file 
    # level=DEBUG : Logging ALL messages 
    # arg=2097152 : RotatingFileHandler with 2097152 Bytes (2 MB) max size 
    # arg=3 : RotatingFileHandler with 3 backup files 
    
    [handler_fullHandler] 
    class=logging.handlers.RotatingFileHandler 
    level=DEBUG 
    formatter=simpleFormatter 
    args=('stdout.log','w',2097152,3) 
    
    ##### STDERR HANDLER ##### 
    # Setup for output to stderr.log file 
    # level=WARNING : Logging WARNING,ERROR and EXCEPTION messages 
    # arg=2097152 : RotatingFileHandler with 2097152 Bytes (2 MB) max size 
    # arg=3 : RotatingFileHandler with 3 backup files 
    
    [handler_errorHandler] 
    class=logging.handlers.RotatingFileHandler 
    level=WARNING 
    formatter=simpleFormatter 
    args=('stderr.log','w',2097152,3) 
    
    ##### APPEARANCE ##### 
    # Setup for formatting of log message 
    # e.g. [2017-12-13 16:00:50.983] DEBUG :: ext_module : DEBUG MESSAGE 
    # e.g. [2017-12-13 16:00:50.983] INFO :: ext_module : INFO MESSAGE 
    # e.g. [2017-12-13 16:00:50.983] WARNING :: ext_module : WARNING MESSAGE 
    # e.g. [2017-12-13 16:00:50.983] ERROR :: ext_module : ERROR MESSAGE 
    # e.g. [2017-12-13 16:00:50.983] ERROR :: ext_module : EXCEPTION MESSAGE 
    
    [formatter_simpleFormatter] 
    format=[%(asctime)s.%(msecs)03d] %(levelname)s :: %(module)s : %(message)s 
    datefmt=%Y-%m-%d %H:%M:%S 
    
    関連する問題