問題タブ [python-logging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python ロガーの ini ファイル構成に環境変数を追加できますか?
log.ini file
関数で使用されているファイル ハンドラーの環境変数を使用して、カスタマイズされたログ ファイル ディレクトリを追加したいと考えていますlogging.fileConfig()
。
次の環境変数を追加しようとしました:
私のlogging.iniは次のようになります:
そして、次を使用して構成します。
私のコードの結果、ディレクトリは次のようになります。path/to/file/${LOG_DIRECTORY_ENV_VARIABLE}/logname.log
python - Python ロギング メッセージを削除または置換できますか?
Python のログ モジュールによって書き込まれた最後のメッセージを置換または削除する方法を探しています。目標は、変数の変更が発生したらログに記録することです。変数が再度変更された場合は、古いログ メッセージを削除し、代わりに新しいログ メッセージを出力する必要があります。
やあ、
現在取り組んでいる深層学習プロジェクトに pythons のログ モジュールを使用しています。一部の GPU では、トレーニング中にデフォルトのバッチ サイズをサポートするのに十分なメモリがなく、事前に計算に使用できるバッチ サイズと実際のメモリ使用量との間に明らかな関連性がないため、実行時エラーが発生したらキャッチして、バッチ サイズを 1 減らします。このプロセスはかなり繰り返される可能性があり、どのバッチサイズが機能しなかったか、次にどのバッチサイズが試行されるかを常にログに記録しています。これらのメッセージを 10 ~ 30 (またはそれ以上) 持つ代わりに、単純に最後のメッセージを削除して、代わりに新しいメッセージに置き換えたいと思います。
私はすでにPythonログのドキュメントをチェックアウトし、LogRecordオブジェクトに出くわしましたが、それに対処しようとすると、このオブジェクトは実際にはすべてのログの記録を保持していないようですが、代わりに1つの特定のログにさらに情報を保存しているようです.
これを行う方法がまったくない場合は、ここで説明されているように、ある種のバンドル ソリューションを検討します: Python ロギング: 繰り返し発生するメッセージをバンドルする
以下のコードは、置き換えようとしているログ メッセージを示しています。
どんな助けでも大歓迎です。
python - Python を使用して毎日新しいディレクトリにログを記録する方法は?
多数の機器からデータを取得し、データをログ ファイルに記録する必要がある読み出しシステムをセットアップしています。このシステムは一度に数週間実行されるため、毎日ログ ファイルが必要です。これらの機器はこの間操作されているため、ステータスに関連付けられたログ ファイルもある場合があります。
これにより、「C:/logs」など、すべてのログが保存されるディレクトリが作成されます。毎日複数のログ ファイルが関連付けられるため、logs フォルダーに毎日新しいサブディレクトリを自動で作成したいと考えています。そのため、ファイルの構造は のよう'C:/logs/20190814' for August 14, 'C:/logs/20190815' for the 15th
になります。次に、毎日の各ディレクトリに'data.log', 'instrument1.log', 'instrument2.log'
、などの多数のログ ファイルを作成します。
理想的には、これらは毎日真夜中に繰り越されます。
Python Logging モジュールを使用して、これらのログ ファイルを作成しようとしています。を実装できましたTimedRotatingFileHandler
が、これの問題は
(1) 日によってログファイルのディレクトリを変更したいが、タイトルはそのままにしたい (例'C:/logs/20190814/data.log', 'C:/logs/20190815/data.log'
)
(2) はファイルを拡張子ではなくTimedRotatingFileHandler
で保存します。これは作業に不便です。毎日新しいディレクトリを作成し、新しい日のディレクトリに新しいログを書き始めたいと思います。'%Y%m%d.log'
'.log.%Y%m%d'
python - サブクラス間での Python 共有ロギング
クラス/サブクラス/モジュール間でログを共有するためのベスト プラクティス アプローチを見つけようとしています。次のクラスは、同じファイルにあるか、パッケージ/モジュール全体に分散している可能性があります。
例えば
この場合、基本クラスによって設定されたように、クラス階層全体が同じロガー インスタンスを共有します。
それは良い習慣ですか?または、次のように各 .py ファイルの先頭にグローバル変数を設定する必要があります。
最初のアプローチは OO のように見え、モジュールのインポートで何もしない (オブジェクトの作成のみ) のを回避しますが、2 番目のアプローチは、各クラスに表示される異なるロガーを作成し、それが含まれているモジュールを反映した名前を付けます。
最初のケースの他の利点は、すべてのクラスで機能する単一のインスタンスにカスタム ログ オプションを設定できることです。一方、2 番目のケースでは、各ロガー名が親/ベース ロガー名を拡張した場合にのみ機能します。 .getLogger('ABC')。ただし、これらのクラスは同じパッケージまたはパッケージ階層にある必要はないため、常に意味があるとは限りません。
最善のアプローチは何ですか?