1

Python のログ モジュールを使用して、アプリケーションのユーザーに表示する情報のいくつかのレイヤーを備えた例外処理メカニズムを使用しようとしています。

アプリケーションでは、ロギング モジュールに 2 つのハンドラがあります。DEBUG 情報を保持するためのファイル ハンドラと、INFO 情報を保持するためのストリーム ハンドラです。デフォルトでは、ログ レベルは INFO に設定されています。私が達成しようとしているのは、例外が発生した場合に、デフォルトでトレースバックなしで単純なエラー メッセージがユーザーに表示される設定です。ログ レベルが DEBUG に設定されている場合でも、ユーザーは単純なメッセージのみを受け取る必要がありますが、今回はファイル ハンドラーを介して例外トレースバックがログ ファイルに記録されます。

これを達成することは可能ですか?

を使用してみlogger.exception(e)ましたが、常にトレースバックがコンソールに出力されます。

4

2 に答える 2

2

tracebackモジュールが役立つ場合があります。アプリケーションの最上位に、catch all ステートメントを配置する必要があります。

setup_log_and_other_basic_services()
try:
    run_your_app()
except Exception as e:
    if is_debug():
        traceback.print_stack()
    else:
        traceback.print_stack(get_log_file())
    print e

try/catch ブロックの外側のコードがクラッシュすることは許されません。

于 2012-04-08T07:18:57.437 に答える
0

Write your custom exception handling function, and use it every time you write catch.

In this function you should check which mode is on (INFO or DEBUG) and then extract info about exception and feed it to logger manually when needed.

于 2012-04-08T06:55:27.030 に答える