ログファイル
日本語 | 日誌書類 |
英語 | log file |
ふりがな | ろぐふぁいる |
フリガナ | ログファイル |
ログを出力するファイル。
ロガーを使用して出力された文字列を書き込むためのファイル。
J2SEのLoggerクラスを使用する場合、FileHandlerクラスを出力ハンドラに設定することで指定したファイルに出力することができる。
だが、実際には簡単な話ではない。
ログファイルは、状況によって出力方式や出力内容に様々なバリエーションが求められる。
バックグラウンドで長期運用を行うシステムの場合、1日ごとに別のログファイルを残す場合がある。
ハードディスクを圧迫する場合、1ファイルのファイルサイズを制限し、古いログを削除する場合がある。
さらにハードディスクを圧迫する場合、ログの出力内容を任意に制限できるようにする場合がある。
通常のログファイルとは別に、重要な問題が発生した場合に出力するための専用のログファイルを用意する場合もある。
ログファイルでありながら、他のシステムに使用するために出力のフォーマットを正しくする必要がある場合もある。
ログファイルは、アプリケーションにおいて最も裏方であり、ある意味最もぞんざいに作られている箇所でありながら、ユーザーに分かりやすい形でプログラム内の情報が出力されるファイルであるため、ユーザーの要望が厳しくなる傾向にある。
ログファイルの問題が「とどめの一撃」になる可能性もある。甘く考えず、ユーザーとの要件定義はしっかりと行っておくこと。
ロガーを使用して出力された文字列を書き込むためのファイル。
J2SEのLoggerクラスを使用する場合、FileHandlerクラスを出力ハンドラに設定することで指定したファイルに出力することができる。
だが、実際には簡単な話ではない。
ログファイルは、状況によって出力方式や出力内容に様々なバリエーションが求められる。
バックグラウンドで長期運用を行うシステムの場合、1日ごとに別のログファイルを残す場合がある。
ハードディスクを圧迫する場合、1ファイルのファイルサイズを制限し、古いログを削除する場合がある。
さらにハードディスクを圧迫する場合、ログの出力内容を任意に制限できるようにする場合がある。
通常のログファイルとは別に、重要な問題が発生した場合に出力するための専用のログファイルを用意する場合もある。
ログファイルでありながら、他のシステムに使用するために出力のフォーマットを正しくする必要がある場合もある。
ログファイルは、アプリケーションにおいて最も裏方であり、ある意味最もぞんざいに作られている箇所でありながら、ユーザーに分かりやすい形でプログラム内の情報が出力されるファイルであるため、ユーザーの要望が厳しくなる傾向にある。
ログファイルの問題が「とどめの一撃」になる可能性もある。甘く考えず、ユーザーとの要件定義はしっかりと行っておくこと。
参考サイト
// 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/22 12:43:16 Sample main
// 情報: ログ出力します。
// Loggerクラスには最初から標準エラー出力への出力が入っているので
// 標準エラー出力にも出力されています。
// 同時に、log.txtが実行時のカレントディレクトリにも作られ、
// その中に同様の出力がされているはずです。
// ログファイルは毎回作り直されるので注意。追記ではありません。
}
catch( IOException e )
{
// FileHandlerクラスのコンストラクタで指定したファイルが
// 作れなかったら、例外が投げられます。
e.printStackTrace();
}
}
}
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/22 12:43:16 Sample main
// 情報: ログ出力します。
// Loggerクラスには最初から標準エラー出力への出力が入っているので
// 標準エラー出力にも出力されています。
// 同時に、log.txtが実行時のカレントディレクトリにも作られ、
// その中に同様の出力がされているはずです。
// ログファイルは毎回作り直されるので注意。追記ではありません。
}
catch( IOException e )
{
// FileHandlerクラスのコンストラクタで指定したファイルが
// 作れなかったら、例外が投げられます。
e.printStackTrace();
}
}
}
// 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/22 12:43:16 Sample main // 情報: ログ出力します。 // Loggerクラスには最初から標準エラー出力への出力が入っているので // 標準エラー出力にも出力されています。 // 同時に、log.txtが実行時のカレントディレクトリにも作られ、 // その中に同様の出力がされているはずです。 // ログファイルは毎回作り直されるので注意。追記ではありません。 } catch( IOException e ) { // FileHandlerクラスのコンストラクタで指定したファイルが // 作れなかったら、例外が投げられます。 e.printStackTrace(); } } }