JB Nizet が提案するようなロギング API を使用します。使い方はかなり簡単です。非常に人気のあるApache ( http://logging.apache.org/log4j )の Log4j を使用してロギングを実装する小さな例を次に示します。
すべてのクラスには、ロガーのインスタンスが用意されています
private static final Logger log = Logger.getLogger(this.getClass());
次に、例外をキャッチする場所で
catch (SQLException e) {
log.debug(e);
}
log4j.properties
次に、で使用してLog4jを構成するだけですclasspath
log4j.appender.stdout.Target=System.out
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
ロギングをオフにするには、変更するのと同じくらい簡単です
log4j.rootLogger=warn, stdout
これが意味することは、警告レベル以上 (エラーや致命的など) のログ ステートメントのみに関心があるということです。約 6 つのログ レベルがあります。致命的、エラー、警告、情報、デバッグ、およびトレースです。レベルを設定すると、指定したレベルよりも低いレベルでログを記録するすべてのログ ステートメントが無視されます。
上記のことを単純化したことに注意してください。log4j.xml
の代わりに使用することをお勧めします.properties
。最新の API では、ログを記録する前にチェックを行うことで、ある程度のパフォーマンスを得ることができます
catch (SQLException e) {
if (log.isDebugEnabled()) log.debug(e);
}
Globals.DEBUG
しかし、実行前にフラグをチェックするだけでなく、フレームワークを使用することの本当のセールス ポイントprintStackTrace()
は、それが将来の証明になることです。物事をファイルに記録する必要がある場合は、明日言ってConsoleAppender
くださいFileAppender
. このユースケースfatal
のためだけに使用される何かについてメールを配信したい。SMTPAppender
他のアペンダーはそのまま構成されたままです。