2016-06-22 10 views
2

私はPythonカラーログを使って、ログのレベルごとに色分けしています。私がコードを実行しているとき、コンソールのログは色ですが、ログファイルには色がありません。私は以下のコードを使用していますPython Colorlogは色付きのログファイルには印刷しません

def setup_logger(logfiletouse): 
    """Return a logger with a default ColoredFormatter.""" 
    formatter = colorlog.ColoredFormatter(
     "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s", 
     datefmt=None, 
     reset=True, 
     log_colors={ 
      'DEBUG': 'cyan', 
      'INFO': 'green', 
      'WARNING': 'yellow', 
      'ERROR': 'red', 
      'CRITICAL': 'red', 
     } 
    ) 

    log = logging.getLogger(logfiletouse) 

    handler = logging.StreamHandler() 
    handler.setFormatter(formatter) 
    log.addHandler(handler) 
    log.setLevel(logging.DEBUG) 

    return log 

これは私の最初のPythonカラーログ使用の試みです。どんな助けもありがとうございます。

答えて

0

colorlogおよびその他のほとんどのターミナルのカラーライブラリで使用されるカラー出力は、シェルのエスケープシーケンスを通じてユーザ端末のプロパティを変更します。

これは実際には、\[\033[34m\]のように人間が読めないシェルエスケープシーケンスを出力します。あなたのシェルは、これらのシーケンスをディスプレイ上の色に分解する責任があります。

プレーンテキストファイルでは、エンコードされた色情報がサポートされていないため、一般的にファイルに書き込むときにはすべてのログツールがカラーサポートをオフにします。どこでもそれらの読みにくいエスケープシーケンスが満載のプレーンテキストファイルを考えてみてください。

シェルのカラーリングとエスケープシーケンスの詳細については、http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html(bash固有、他のシェルと同様)をご覧ください。

関連する問題