Pythonのlogging
モジュールの出力に色を追加します。
ColorLogは現在、Python 3.6以降が必要です。古いバージョン(5.xx未満)は、Python 2.6以降をサポートしています。
Coloramaは必要な依存関係として含まれており、WindowsでColorLogを使用するときに初期化されます。
このライブラリは10年以上前のものであり、そのほとんどの寿命のために幅広いPythonバージョンのセットをサポートしていたため、新しい機能を追加するのが難しいライブラリになりました。 ColorLog 6は、新しい機能をより簡単に追加できるようにするため、逆方向の互換性を破る場合がありますが、すべての変更や機能のリクエストを受け入れない場合があります。 ColorLog 4は必須のバグフィックスを受け入れるかもしれませんが、積極的に維持されると見なされるべきではなく、大きな変更や新機能を受け入れません。
PYPIから:
pip install colorlog
いくつかのLinuxディストリビューションは、公式パッケージ(Debian、Arch、Fedora、Gentoo、Opensuse、Ubuntu)を提供し、その他はユーザー提供パッケージ(BSDポート、コンドラ)を提供しています。
import colorlog
handler = colorlog . StreamHandler ()
handler . setFormatter ( colorlog . ColoredFormatter (
'%(log_color)s%(levelname)s:%(name)s:%(message)s' ))
logger = colorlog . getLogger ( 'example' )
logger . addHandler ( handler )
ColoredFormatter
クラスはいくつかの議論を取ります:
format
:メッセージの出力に使用される形式の文字列(必須)。datefmt
:ベースクラスに渡されたオプションの日付形式。 logging.Formatter
参照してください。reset
:出力が既に1で終了しない限り、メッセージ出力にカラーリセットコードを暗黙的に追加します。デフォルトはTrue
です。log_colors
:レコードレベルの名前をカラー名にマッピングします。デフォルトは、 colorlog.default_log_colors
、または以下の例にあります。secondary_log_colors
: log_colors
スタイルマッピングへの名前のマッピング。形式で使用できる追加の色を定義します。例については、以下を参照してください。style
:Python 3.2以上で入手可能。 logging.Formatter
参照してください。形式の文字列にパラメーターを追加することにより、カラーエスケープコードは、ログレコードレベルに基づいて選択できます。
log_color
:レコードレベルに関連付けられた色を返します。<name>_log_color
:フォーマッタにセカンダリカラーが構成されている場合、レコードレベルに基づいて別の色を返します(以下のsecondary_log_colors
を参照)。複数のエスケープコードは、ログレベルの色を構成するときにコンマで接合することで一度に使用できます(ただし、形式で直接使用することはできません)。たとえば、 black,bg_white
白い背景に黒いテキストにエスケープコードを使用します。
次のエスケープコードは、形式の文字列で使用できるようになります。
{color}
、 fg_{color}
、 bg_{color}
:前景と背景の色。bold
、 bold_{color}
、 fg_bold_{color}
、 bg_bold_{color}
:太字/明るい色。thin
、 thin_{color}
、 fg_thin_{color}
:薄い色(端子依存)。reset
:すべてのフォーマットをクリアします(前景と背景の両方の色)。利用可能なカラー名は次のとおりです。
black
red
green
yellow
blue
、purple
cyan
white
「明るい」色を使用することもできます。これらは標準的なANSIコードではなく、これらのサポートは端末ごとに大きく異なります。
light_black
light_red
light_green
light_yellow
light_blue
light_purple
light_cyan
light_white
次のコードは、各引数のデフォルト値を使用して、ログセットアップで使用するColoredFormatter
を作成します。
from colorlog import ColoredFormatter
formatter = 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,bg_white' ,
},
secondary_log_colors = {},
style = '%'
)
secondary_log_colors
を使用します二次ログの色は、ログレベルに基づいて選択される複数の色を持つ方法です。 secondary_log_colors
の各キーは、形式の文字列で使用できるmessage
( message_log_color
になります)を追加し、 log_colors
引数と形式が同一の対応する値を持っています。
次の例では、デフォルトのログ色を使用してレベル名を強調し、 error
とcritical
レベルのログメッセージのためにREDのメッセージを強調表示します。
from colorlog import ColoredFormatter
formatter = ColoredFormatter (
"%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s" ,
secondary_log_colors = {
'message' : {
'ERROR' : 'red' ,
'CRITICAL' : 'red'
}
}
)
dictConfig
で logging . config . dictConfig ({
'formatters' : {
'colored' : {
'()' : 'colorlog.ColoredFormatter' ,
'format' : "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
}
}
})
辞書の完全な辞書はtests/test_colorlog.py
にあります。
fileConfig
と...
[formatters]
keys =color
[formatter_color]
class =colorlog.ColoredFormatter
format =%(log_color)s%(levelname)-8s%(reset)s %(bg_blue)s[%(name)s]%(reset)s %(message)s from fileConfig
datefmt =%m-%d %H:%M:%S
これらの引数で作成されたColorEdformatterのインスタンスは、 color
Formatterを使用するように構成されているハンドラーによって使用されます。
完全な例の構成はtests/test_config.ini
にあります。
coloredformatterは、 logging.addLevelName
で追加されたカスタムログレベルで動作します。
import logging , colorlog
TRACE = 5
logging . addLevelName ( TRACE , 'TRACE' )
formatter = colorlog . ColoredFormatter ( log_colors = { 'TRACE' : 'yellow' })
handler = logging . StreamHandler ()
handler . setFormatter ( formatter )
logger = logging . getLogger ( 'example' )
logger . addHandler ( handler )
logger . setLevel ( 'TRACE' )
logger . log ( TRACE , 'a message using a custom level' )
上記の例と同様のテストはtests/test_colorlog.py
にあります。
ColorLogはメンテナンスモードです。バグフィックスが公開されていることを確認していますが、Python 2.6+およびPython 3+との互換性により、これは機能を追加するのが難しいコードベースになります。既存のユーザーの互換性を後押しする可能性のある変更は考慮されません。
Pythonロギングを改善するための最新のライブラリがいくつかあります。
GitHubは、ColorLogに依存するプロジェクトのリストを提供します。
一部の早期採用者には、Errbot、Pythran、およびZenlogが含まれていました。
Copyright(c)2012-2021 Sam Clements [email protected]
このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)のコピーを取得している人に、これにより許可が無料で許可され、制限なしにソフトウェアを扱うことができます。 、ソフトウェアのコピーを公開、配布、サブライセンス、および/または販売し、次の条件を条件として、ソフトウェアが提供される人を許可します。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたは使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。ソフトウェア。