Logger
日本語 | 日誌書き |
英語 | logger |
ふりがな | ろがー |
フリガナ | ロガー |
ログを残すクラス。ロガー。
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.util.logging.Logger。
ログを残すためのクラス。
標準エラー出力へのログ出力を標準で持つ。
出力先はjava.util.logging.Handlerクラスの任意のサブクラスをLoggerクラスのaddHandler()メソッドに追加することで複数の出力先を設定できる。またこのクラスにjava.util.logging.Formatterクラスの任意のサブクラスをsetFormatter()メソッドでセットすることで任意の出力形式にすることができる。
ログ出力はLoggerクラスのlog()メソッドで行う。その際、第1引数で出力レベルを設定する。出力レベルの設定を省く場合にはsevere()メソッドやinfo()メソッド等を使用する。出力レベルの上限の設定はsetLevel()メソッドを使用する。
このように、Loggerクラスはプログラム上でハンドラや出力レベルの上限設定を行うため、あとで設定を変更することができないというデメリットがある。汎用性を考えればLog4jの方がいいだろう。
また、Log4jを含めて、ログクラスのほとんどは「Logger」というクラス名のため、一般に「Logger」というクラス名であっても実際のクラスは異なる場合も多い。
java.util.logging.Loggerクラスは前述のようにあまり使い勝手が良くないため、一般の意味でも「Logger」がjava.util.logging.Loggerクラスを指すとは限らない。文脈やパッケージを確認するのがいいだろう。
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.util.logging.Logger。
ログを残すためのクラス。
標準エラー出力へのログ出力を標準で持つ。
出力先はjava.util.logging.Handlerクラスの任意のサブクラスをLoggerクラスのaddHandler()メソッドに追加することで複数の出力先を設定できる。またこのクラスにjava.util.logging.Formatterクラスの任意のサブクラスをsetFormatter()メソッドでセットすることで任意の出力形式にすることができる。
ログ出力はLoggerクラスのlog()メソッドで行う。その際、第1引数で出力レベルを設定する。出力レベルの設定を省く場合にはsevere()メソッドやinfo()メソッド等を使用する。出力レベルの上限の設定はsetLevel()メソッドを使用する。
このように、Loggerクラスはプログラム上でハンドラや出力レベルの上限設定を行うため、あとで設定を変更することができないというデメリットがある。汎用性を考えればLog4jの方がいいだろう。
また、Log4jを含めて、ログクラスのほとんどは「Logger」というクラス名のため、一般に「Logger」というクラス名であっても実際のクラスは異なる場合も多い。
java.util.logging.Loggerクラスは前述のようにあまり使い勝手が良くないため、一般の意味でも「Logger」がjava.util.logging.Loggerクラスを指すとは限らない。文脈やパッケージを確認するのがいいだろう。
// Sample.java
import java.io.IOException;
import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
public class Sample
{
public static void main( String[] args )
{
try
{
// ログ名を指定してログクラスを作ります。
// 通常は、1クラスにつき1ロガーなので、クラス名を付けます。
Logger logger = Logger.getLogger( "Sample" );
// ログファイルに出力するために、FileHandlerクラスを使用します。
// 出力ファイル名はlog.txtです。
FileHandler handler = new FileHandler( "log.txt" );
// 普通に出力するのでSimpleFormatterクラスを使用します。
handler.setFormatter( new SimpleFormatter() );
// 出力先としてhandlerを追加します。
logger.addHandler( handler );
// INFOレベルのログを出力します。
logger.info( "ログ出力します。" );
// 2005/06/23 14:51:06 Sample main
// 情報: ログを出力します。
// Loggerクラスには最初から標準エラー出力への出力が入っているので
// 標準エラー出力にも出力されています。
// 同時に、log.txtが実行時のカレントディレクトリにも作られ、
// その中に同様の出力がされているはずです。
// ログファイルは毎回作り直されるので注意。追記ではありません。
}
catch( IOException e )
{
// FileHandlerクラスのコンストラクタで指定したファイルが
// 作れなかったら、例外が投げられます。
e.printStackTrace();
}
// 一番簡単なログの使い方。
Logger.global.info( "ログを出力します。" );
// 2005/06/23 14:51:06 Sample main
// 情報: ログを出力します。
// このように、Loggerクラスのglobalフィールドを使うと
// 簡単に標準エラー出力にログ出力できます。
}
}
import java.io.IOException;
import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
public class Sample
{
public static void main( String[] args )
{
try
{
// ログ名を指定してログクラスを作ります。
// 通常は、1クラスにつき1ロガーなので、クラス名を付けます。
Logger logger = Logger.getLogger( "Sample" );
// ログファイルに出力するために、FileHandlerクラスを使用します。
// 出力ファイル名はlog.txtです。
FileHandler handler = new FileHandler( "log.txt" );
// 普通に出力するのでSimpleFormatterクラスを使用します。
handler.setFormatter( new SimpleFormatter() );
// 出力先としてhandlerを追加します。
logger.addHandler( handler );
// INFOレベルのログを出力します。
logger.info( "ログ出力します。" );
// 2005/06/23 14:51:06 Sample main
// 情報: ログを出力します。
// Loggerクラスには最初から標準エラー出力への出力が入っているので
// 標準エラー出力にも出力されています。
// 同時に、log.txtが実行時のカレントディレクトリにも作られ、
// その中に同様の出力がされているはずです。
// ログファイルは毎回作り直されるので注意。追記ではありません。
}
catch( IOException e )
{
// FileHandlerクラスのコンストラクタで指定したファイルが
// 作れなかったら、例外が投げられます。
e.printStackTrace();
}
// 一番簡単なログの使い方。
Logger.global.info( "ログを出力します。" );
// 2005/06/23 14:51:06 Sample main
// 情報: ログを出力します。
// このように、Loggerクラスのglobalフィールドを使うと
// 簡単に標準エラー出力にログ出力できます。
}
}
// Sample.java import java.io.IOException; import java.util.logging.Logger; import java.util.logging.FileHandler; import java.util.logging.SimpleFormatter; public class Sample { public static void main( String[] args ) { try { // ログ名を指定してログクラスを作ります。 // 通常は、1クラスにつき1ロガーなので、クラス名を付けます。 Logger logger = Logger.getLogger( "Sample" ); // ログファイルに出力するために、FileHandlerクラスを使用します。 // 出力ファイル名はlog.txtです。 FileHandler handler = new FileHandler( "log.txt" ); // 普通に出力するのでSimpleFormatterクラスを使用します。 handler.setFormatter( new SimpleFormatter() ); // 出力先としてhandlerを追加します。 logger.addHandler( handler ); // INFOレベルのログを出力します。 logger.info( "ログ出力します。" ); // 2005/06/23 14:51:06 Sample main // 情報: ログを出力します。 // Loggerクラスには最初から標準エラー出力への出力が入っているので // 標準エラー出力にも出力されています。 // 同時に、log.txtが実行時のカレントディレクトリにも作られ、 // その中に同様の出力がされているはずです。 // ログファイルは毎回作り直されるので注意。追記ではありません。 } catch( IOException e ) { // FileHandlerクラスのコンストラクタで指定したファイルが // 作れなかったら、例外が投げられます。 e.printStackTrace(); } // 一番簡単なログの使い方。 Logger.global.info( "ログを出力します。" ); // 2005/06/23 14:51:06 Sample main // 情報: ログを出力します。 // このように、Loggerクラスのglobalフィールドを使うと // 簡単に標準エラー出力にログ出力できます。 } }