2017-10-31 17 views
0

私はPythonsのログモジュールを使用しています。私は簡単に私のログメッセージに変更したいと思います。ここでフォーマッタがどのように見える、との結果です:Python:切り詰められたログレベルの名前(文字列の書式設定)のカスタマイズ

console_err_format = logging.Formatter(
    str("%(asctime)s - " + "%(levelname)s" +" - %(message)s"), 
    "%H:%M:%S") 

12:35:33 - INFO - Assessing reads and library type 
12:35:33 - DEBUG - Checking reads... 
12:35:33 - WARNING - Error while checking reads... 

私が示されるロガーレベルのちょうど最初の文字をしたいと思います:

12:35:33 - I - Assessing reads and library type 
12:35:33 - D - Checking reads... 
12:35:33 - W - Error while checking reads... 

誰もがこれを行う方法を知っていますか?私は役に立たない、次のものを試しました:

# attempt 1 
console_err_format = logging.Formatter(
    str("%(asctime)s - " +"{0}".format("%(levelname)s"[:1]) +" - %(message)s"), "%H:%M:%S") 
# attempt 2 
console_err_format = logging.Formatter(
    str("%(asctime)s - " +"%(levelname)s"[:1] +" - %(message)s"), "%H:%M:%S") 

何かヒントはありがたいです!ボーナスは、もし誰かがカラーロギングモジュールのどれかを統合する方法を見つけたならば、

答えて

1

次の例のように、1文字の精度のための形式指定子を使用する:

>>> import logging 
>>> logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname).1s %(message)s') 
>>> logging.debug('Message should be as required') 
2017-11-01 00:47:31,409 D Message should be as required 
>>> logging.warning('Warning message should be as required') 
2017-11-01 00:47:50,702 W Warning message should be as required 
>>> 

注一つにその値の出力を制限%(levelname)指定子、(中sの前に.1最初の文字)。

1

私はフォーマッタを使ってそれを行う方法がわかりませんが、組み込みのレベル名の文字列を自分で置き換えることはできます。たとえば、

logging.addLevelName(logging.WARNING, 'W') 

は、WARNINGレベルに関連付けられた文字列を1文字の「W」に置き換えます。すべてのレベルについて上記を繰り返すことで、望ましい効果が得られます。

+0

これは素晴らしいです(また、色付けも簡単ですが、方法は簡単です)。他に誰もフォーマッタ自体を操作する方法で応答しない場合は、これが最善の策だと思います – NWaters

関連する問題