[解決済み] python logging formatter を適切にフォーマットする方法は?
2022-03-03 14:20:48
質問
Pythonのロギングフォーマッタが出力する文字列をフォーマットしようと思っています。私は問題を示すために最小限の例を書きました。
import logging
from pathlib import Path
# create auxiliary variables
loggerName = Path(__file__).stem
# create logging formatter
logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)s :: %(message)s')
# create logger
logger = logging.getLogger(loggerName)
logger.setLevel(logging.DEBUG)
# create console handler
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.WARNING)
consoleHandler.setFormatter(logFormatter)
# Add console handler to logger
logger.addHandler(consoleHandler)
# Test
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
このスクリプトは、適切な書式設定をしていない状態で出力されます。
logger :: WARNING :: warn message
logger :: ERROR :: error message
logger :: CRITICAL :: critical message
ログの左側が整列するように書式を変更したいのですが、どうすればいいですか?
logger :: WARNING :: warn message
logger :: ERROR :: error message
logger :: CRITICAL :: critical message
解決方法は?
フォーマット文字列は、Pythonの正規の
%
-という書式もあります。
printf
-スタイルの書式設定です。これについては、以下のドキュメントで詳しく説明されています。
https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
求めるのは、フィールド幅の最小値と
-
フラグを使用します。
'-'
変換後の値は調整されたままです
ということで
logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)-8s :: %(message)s')
を実行すると、次のような出力が得られます。
test :: WARNING :: warn message
test :: ERROR :: error message
test :: CRITICAL :: critical message
関連
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
PythonはWordの読み書きの変更操作を実装している
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件