2

私はJavaに不慣れで、例によって例外をログに記録する方法を学ぼうとしています。ここで次のサンプルコードを見つけました。

http://www.kodejava.org/examples/447.html

ただし、ログファイルのファイル名が指定されている場所がわかりません。私がグーグルで質問を調査するとき、人々は通常、ログファイルがどこに保存されるかを理解するためにJavaをプログラミングするために使用されるフレームワークを参照します。ただし、フレームワークは使用していません。コマンドラインからVIMエディターを使用してJavaファイルを作成しています。javaファイルはLinuxCentOSアプリケーションサーバー上にあり、クライアントのブラウザから呼び出されます。

質問1:以下の例を変更して、ログに記録するためのファイル名とパスを含めることはできますか?または、私はこの質問でベースから離れていますか?

質問2:例外をログに記録しても、ユーザーが表示できるようにクライアントに伝播されますか?うまくいけば、そうでなければ、ユーザーはエラーが発生したことを知りません。

package org.kodejava.example.util.logging;

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class LoggingException {
private static Logger logger = Logger.getLogger(LoggingException.class.getName());

public static void main(String[] args) {
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    df.setLenient(false);

    try {
        //
        // Try to parsing a wrong date.
        //
        Date date = df.parse("12/30/1990");

        System.out.println("Date = " + date);
    } catch (ParseException e) {
        //
        // Create a Level.SEVERE logging message
        //
        if (logger.isLoggable(Level.SEVERE)) {
            logger.log(Level.SEVERE, "Error parsing date", e);
        }
    }
}
}
4

3 に答える 3

2

これを試して:

try {
    FileHandler handler = new FileHandler("myLogFile.log", true);
    Logger logger = Logger.getLogger(LoggingException.class.getName());
    logger.addHandler(handler);
} catch (IOException e) {
    logger.log(Level.SEVERE, "Error parsing date", e);
}

デフォルトでは、ファイルハンドラーは、ログファイルが作成されるたびにログファイルの内容を上書きします。ログファイルを追加することもできるので、FileHandlerコンストラクターtrueで2番目のパラメーターとして指定する必要があります。

お役に立てれば。

編集:

package org.kodejava.example.util.logging;

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class LoggingException {
private static Logger logger = Logger.getLogger(LoggingException.class.getName());

public static void main(String[] args) {
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    df.setLenient(false);
    FileHandler handler = new FileHandler("myLogFile.log", true);
    logger.addHandler(handler);
    try {
        //
        // Try to parsing a wrong date.
        //
        Date date = df.parse("12/30/1990");

        System.out.println("Date = " + date);
    } catch (ParseException e) {
        //
        // Create a Level.SEVERE logging message
        //
        if (logger.isLoggable(Level.SEVERE)) {
            logger.log(Level.SEVERE, "Error parsing date", e);
        }
    }
  }
}

これは機能するはずです。私はそれをテストしませんでした。より効率的な方法は、ロガーを初期化し、それにハンドラーを追加するメソッドを作成することです。ただし、主にを使用することを検討することをお勧めしますlog4j。セットアップが簡単で、広く使用されているロギングフレームワークです。

于 2012-06-07T19:33:42.957 に答える
1

ログに添付されたFileHandlerが必要です。これは、初期化のどこかに手動で追加するか、.propertiesファイルを使用してログを構成できます。

(psこの例のisLoggable呼び出しは冗長であり、コードを肥大化させるだけです)

于 2012-06-07T19:33:33.773 に答える
1

構成にロガーのファイルハンドラーを追加します。リンク:http ://www.crazysquirrel.com/computing/java/logging.jspx

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

log4jを使用することをお勧めします。これは優れたロギングフレームワークです。

于 2012-06-07T19:36:56.860 に答える