ググればやり方はいろいろ見つかり、いろいろ試してみましたが、rich
を使うのが一番簡単かつ見栄えがいいかもしれません。
前提
ログに関する設定は yaml ファイルに切り出しています。
coloredlogs を使う方法
pip install coloredlogs
with open('./logging.yaml', encoding='utf-8') as f:
logconfig = yaml.safe_load(f)
config.dictConfig(logconfig)
coloredlogs.install(level='DEBUG') # 追加
簡単にカラフルに出来ましたが、 logging.yaml
の設定が上書きされてしまいました。
他にやり方があるのかもしれません。
colorlog を使う方法
pip install colorlog
logging.yaml
で、colorlog
を使うように指定し、{log_color}
でレベルに合わせた色分けをしてくれます。
version: 1
root:
level: DEBUG
handlers: [console]
handlers:
console:
class: logging.StreamHandler
stream: ext://sys.stderr
formatter: myformatter
formatters:
myformatter:
'()': 'colorlog.ColoredFormatter'
format: "{log_color}{asctime} [{levelname:.4}] {name}: {message}"
style: "{"
各レベルの色を自分で定義
version: 1
root:
level: DEBUG
handlers: [console]
handlers:
console:
class: logging.StreamHandler
stream: ext://sys.stderr
formatter: myformatter
formatters:
myformatter:
'()': 'colorlog.ColoredFormatter'
format: "{log_color}{asctime} [{levelname:.4}] {name}: {message}"
style: "{"
log_colors:
DEBUG: 'bold_black'
INFO: 'white'
WARNING: 'yellow'
ERROR: 'red'
CRITICAL: 'bold_red'
一つのログ内で色分けしたい場合
format
で以下のように記述すれば OK です。
format: "{cyan}{asctime} {blue}{name} L{lineno} {bold_black}{levelname}{reset} {log_color}{message}"
rich を使う方法
コンソールへの出力をリッチにしてくれる Rich
というライブラリの RichHandler
を使ってログを出力する方法です。
pip install rich
version: 1
root:
level: INFO
handlers: [rich]
handlers:
rich:
class: rich.logging.RichHandler
rich_tracebacks: True
これだけで簡単にカラフルなログを出力してくれます。