私は自分のプロジェクトでどのようにロギングをセットアップするかというタスクに取り組んでいます。 myApp。いくつかのモジュールとファイルで構成されており、ロギングの基本パターンをいくつか作成したいと思います。すべてのログは/var/log/myApp
にある必要があります。このディレクトリは、 user_errors.log
およびerrors.log
。主なアプローチは、例外の種類に応じて異なるファイルに違反しているすべての例外をログに記録されいくつかのモジュールにまたがっていくつかのファイルにPythonがログインします
# a.py:
class A(object):
def __init__(self):
self.c = my_app.C()
...
def some_method(self)
raise MyUserError(...)
# b.py
class B(object):
...
raise MyException(...)
# c.py
class C(object):
...
raise MyException(...)
# d.py which has instances of A and B
class D(object):
...
def some_method(self):
...
except MyUserError as ue:
# log into user_error.log
except MyException as e:
# log into error.log
:両方のファイルがLINENOなど、日付、ファイルと同じフォーマットパターンに今すぐご検討ください次のような構造を持っています。また、例外と違反した場所の名前と行番号を記録することが重要です。私は何とかlogging
モジュールを拡張するいくつかのmyLoggerクラスを作成すると思っていましたが、どのように良い例が見つかりませんでした。私はチュートリアルを読んだので、出力をフォーマットする方法などを知っています。ヘルプのために事前にありがとう!
が存在することになる場合にはどのようなログを記録する別の10個のファイル?ファイルごとに別の3行を書くことは、私にとってはうまく見えません。この場合、設定ファイルを使用する方が良いでしょうか? – marthin23
私は、モジュールがハンドラを構成してはならないと思います。モジュール内のハードコードされたハンドラ設定は、後で他のコードから使用すると管理が非常に難しくなります(モジュールを作成する場合は非常に期待されます)。モジュールは単にロガーを作成してログレコードを出力します。ハンドラはそれらのモジュールの外部で構成されなければならない。 –
例外に基づいてロガーとハンドラーを作成する必要がある場合は、ファイルの先頭にあるループ内で例外のインデックスを作成してください。その後、例外ハンドラで、例外を参照して正しいロガーを取得します。 –