[解決済み] ファイルにログを記録し、標準出力に印刷するためのロガー設定
2022-02-01 15:14:39
質問事項
私はPythonのloggingモジュールを使って、いくつかのデバッグ文字列をファイルに記録していますが、かなりうまくいっています。今、私はさらに、標準出力に文字列を印刷するために、このモジュールを使用したいと思います。どうしたらいいでしょうか?文字列をファイルに記録するために、私は次のコードを使用します。
import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
のようなロガー関数を呼び出してください。
logger.debug("I am written to the file")
ありがとうございました。
どのように解決するのですか?
ルートロガーへのハンドルを取得し、そのハンドルに
StreamHandler
. また
StreamHandler
は標準エラー出力に書き込みます。stderrよりもstdoutが本当に必要かどうかはわかりませんが、私がPythonのロガーをセットアップするときに使っているもので、さらにその上に
FileHandler
もあります。そうすると、すべてのログが両方の場所に送られるようになります(これはあなたが望んでいることのようです)。
import logging
logging.getLogger().addHandler(logging.StreamHandler())
に出力したい場合は
stdout
の代わりに
stderr
に指定する必要があります。
StreamHandler
のコンストラクタを使用します。
import sys
# ...
logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
を追加することもできます。
Formatter
を追加することで、すべてのログ行に共通のヘッダを持たせることができます。
ie
import logging
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s")
rootLogger = logging.getLogger()
fileHandler = logging.FileHandler("{0}/{1}.log".format(logPath, fileName))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)
の書式で印刷します。
2012-12-05 16:58:26,618 [MainThread ] [INFO ] my message
関連
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Pythonのロガーがログファイルに加えて標準出力にも全メッセージを出力するようにする。
-
[解決済み] どうすれば、文字列中のリテラルな中抜き文字を印刷し、また.formatを使用することができるのでしょうか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] Python Logging - インポートモジュールからのロギングを無効にする
最新
-
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 call matlab メソッドの詳細
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Pythonの@decoratorsについてまとめてみました。
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み] .txtファイルへの印刷出力を指示する