1

私はサーブレット/JSPを使用し、http://logging.apache.org/log4j/1.2/からlog4jと呼ばれるapacheによるロギングJARを使用してデモアプリを開発しています

私の質問は、ロギングを使用する場所に関連しています。ベストプラクティスはありますか?

1 -エラー メッセージを try/catch に記録し、例外をスローする必要があります。以下の例を参照してください。

2 -デバッグや情報の出力に System.out.println("message") を使用する必要がある場合に使用する必要がありますか?

3 -本番環境で使用するか、開発でのみ使用する必要がありますか?

アプリケーションでどのように使用しますか?

私はそれを正しく行っていますか、それとも役に立たないメッセージを生成していますか?

try{
            con = ConnectionManager.getConnection();
            ps = prepareStatement(con, SQL_DELETE, false, values);
            int affectedRows = ps.executeUpdate();
            if(affectedRows == 0){
                log.error("delete: Deleting user failed, no rows affected");
                throw new DAOException("Deleting user failed, no rows affected.");
            }else{
                user.setId(null);
            }
        }catch(SQLException e){
            log.error("delete: " + e.getMessage());
            throw new DAOException(e);
        }finally{
            close(con, ps);
        }


try{
            Class.forName(DRIVER);

            try{
                Class.forName(DRIVER);
                log.info("Connecting database...");
                con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
                log.info("Database connected!");

            }catch(SQLException ex){
                throw new RuntimeException("Cannot connect the database!", ex);
            }
        }catch(ClassNotFoundException e){
            log.error("Closing ResultSet failed: " + e.getMessage());
            System.exit(-1);
        }
4

1 に答える 1

1

ロガーは基本的に、デバッグ ステートメント、情報、またはエラー メッセージをログ ファイルにキャプチャするために使用されます。

理想的には、Web アプリのどこでも System.out.println("message") を使用しないでください。log4j などのロガーのみを使用してください。

  1. try-catch ブロックでキャッチされたすべてのエラー メッセージは、次のようにログに記録する必要があります。

    if(log.isErrorEnabled()) { log.error("エラーメッセージ"); }

  2. アプリをデバッグしたり、ログに開発情報を出力したりするために使用するステートメントは、次のように記述できます。

    if(log.isDebugEnabled()) { log.debug("デバッグ メッセージ"); }

また

if(log.isInfoEnabled()) {
   log.info("debug message");
}

上記の形式でロガーをコードに追加したら、ソース コードを再コンパイルせずに、Log4j 構成 (プロパティまたは XML ファイル) でログ レベルを設定することにより、ログへの出力を有効または無効にすることができます。

例えば、

ログ レベルが DEBUG -> debug の場合、情報およびエラー メッセージがログ ファイルに記録されます。

ロギング レベルが INFO の場合 -> 情報とエラー メッセージのみがログ ファイルに記録されます (デバッグ メッセージは記録されません)。

ロギング レベルが ERROR の場合 -> エラー メッセージのみがログ ファイルに記録されます (deebug または情報メッセージは記録されません)。

理想的には、本番環境ではロガー レベルを ERROR に設定し、開発環境ではロガー レベルを DEBUG または INFO に設定します。

Log4j は、私が上で書いたものよりもはるかに強力で便利です。詳細については、Log4j のマニュアルを参照してください。

于 2012-08-07T18:52:00.287 に答える