「Log4J/ログの内容をかっこよく作る(Layout)」の編集履歴(バックアップ)一覧はこちら
「Log4J/ログの内容をかっこよく作る(Layout)」(2007/03/28 (水) 15:02:34) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
外部ログに出力もできるようになったので、じゃあ次行っちゃいましょうか。です。
ログの形をフォーマットです。
いまのままじゃただのメッセージです。
よりログっぽくです。
#contents
----
*やっちゃいます。
**org.apache.log4j.PatternLayout
これだな、これ!
って、これって前に使ってたような。。。
コピペの怖いワナ。。。
こんなふうに生成して
>PatternLayout layout = new PatternLayout();
でAppenderで使ってる。
>appender = new WriterAppender(layout,writer);
じゃこのlayoutに何か設定してあげたらいいんじゃ?なんて安直に思ったり。
いやいや、newするときじゃない?
**PatternLayoutに好き勝手に設定してみる。
>PatternLayout layout = new PatternLayout();
を
>PatternLayout layout = new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
ってしてみたの。
>TTCC_CONVERSION_PATTERN
っていうのは
>%r [%t] %p %c %x - %m%n
ってパターンのこと。
最初は自分で指定しないであらかじめ用意してくれてるの使ってみようと思って。
というわけで
**TTCC_CONVERSION_PATTERNで出力してみる。
こんな感じで作ってみたです。前と違うところはPatternLayoutのnewでパターンを設定してるってことだけ。
> public static void main(String argv[]) {
> PatternLayout layout =
> new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
> // 出力ファイル名
> String file = "sample.log";
>
> // java.io.Writerオブジェクト
> // org.apache.log4j.WriterAppenderオブジェクト
> Writer writer = null;
> WriterAppender appender = null;
>
> try{
> writer = new FileWriter(file,true);
> appender = new WriterAppender(layout,writer);
> }catch(IOException e){
>
> }
>
> Logger logger = Logger.getLogger("Sample");
> logger.addAppender(appender);
> logger.info("This is info.");
>
> System.out.println("おわったよん");
> }
よし。
実行結果!
>0 [main] INFO Sample - This is info.
って出たわ。
きゃーなんだかすてきー。
中身について考えるわ。
さっきの%mとか%nとかってやつが上みたいになるわけね。
>%r [%t] %p %c %x - %m%n
%rってのが
>アプリケーションが開始してから、ログが出力されるまでの時間をミリ秒単位で出力する。
0ってことはすぐかい!
%tってのが
>ログを生成したスレッドの名前を出力する。
"["と"]"でかこってあるわ。これはこの形でそのまんま出力されてるー。
main。そうかメインしかないもんね。ってこれであってる?
%pってのが
>ログの優先度を出力します。
%cってのが
>ログイベントのカテゴリー名を出力する。
%xってのが
>ログが生成されたスレッドのNDC(ネスト化診断コンテキスト) を出力する。
せんせい!よくわかりません!てか出力されてないし。
%mってのが
>ロギングイベントで設定されたメッセージを出力する。
私がお願いしたとおりにでています。てかコピペしたんだけど。
%nってのが
>プラットフォーム依存の改行文字を出力する。
次のログは改行後にでてくれるってわけね。
うーん。
これでもいい感じはするんだけど、日時とかほしいかも。
自分で作ってみましょうそうしましょう。
というわけでやってみた。
**好きな形で出力してみる。
まずはちょっと簡単な形で。
上の項の
>new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
を
>String LogPattern = "%p : %d{yyyy/MM/dd hh:mm:ss} : %c : %C : %n";
>PatternLayout layout = new PatternLayout(LogPattern);
にしてみたら。
実行結果!
>INFO : 2007/03/28 02:08:32 : Sample : Log4Jtest.test.dotcom.Log4jTest :
なんてでてきましたよ!
%Cは実行した時のクラス名???
じゃ%Cは別のクラスで実行したら変わるのかな?
さて次はこれをいろんなところで使ってみたいのです。
組み込んでみたいのです。
設定ファイルを使うやり方ってのも知りたいし。
まだまだお勉強します。
外部ログに出力もできるようになったので、じゃあ次行っちゃいましょうか。です。
ログの形をフォーマットです。
いまのままじゃただのメッセージです。
よりログっぽくです。
#contents
----
*やっちゃいます。
**org.apache.log4j.PatternLayout
これだな、これ!
って、これって前に使ってたような。。。
コピペの怖いワナ。。。
こんなふうに生成して
>PatternLayout layout = new PatternLayout();
でAppenderで使ってる。
>appender = new WriterAppender(layout,writer);
じゃこのlayoutに何か設定してあげたらいいんじゃ?なんて安直に思ったり。
いやいや、newするときじゃない?
**PatternLayoutに好き勝手に設定してみる。
>PatternLayout layout = new PatternLayout();
を
>PatternLayout layout =
> new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
ってしてみたの。
>TTCC_CONVERSION_PATTERN
っていうのは
>%r [%t] %p %c %x - %m%n
ってパターンのこと。
最初は自分で指定しないであらかじめ用意してくれてるの使ってみようと思って。
というわけで
**TTCC_CONVERSION_PATTERNで出力してみる。
こんな感じで作ってみたです。前と違うところはPatternLayoutのnewでパターンを設定してるってことだけ。
> public static void main(String argv[]) {
> PatternLayout layout =
> new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
> // 出力ファイル名
> String file = "sample.log";
>
> // java.io.Writerオブジェクト
> // org.apache.log4j.WriterAppenderオブジェクト
> Writer writer = null;
> WriterAppender appender = null;
>
> try{
> writer = new FileWriter(file,true);
> appender = new WriterAppender(layout,writer);
> }catch(IOException e){
>
> }
>
> Logger logger = Logger.getLogger("Sample");
> logger.addAppender(appender);
> logger.info("This is info.");
>
> System.out.println("おわったよん");
> }
よし。
実行結果!
>0 [main] INFO Sample - This is info.
って出たわ。
きゃーなんだかすてきー。
中身について考えるわ。
さっきの%mとか%nとかってやつが上みたいになるわけね。
>%r [%t] %p %c %x - %m%n
%rってのが
>アプリケーションが開始してから、ログが出力されるまでの時間をミリ秒単位で出力する。
0ってことはすぐかい!
%tってのが
>ログを生成したスレッドの名前を出力する。
"["と"]"でかこってあるわ。これはこの形でそのまんま出力されてるー。
main。そうかメインしかないもんね。ってこれであってる?
%pってのが
>ログの優先度を出力します。
%cってのが
>ログイベントのカテゴリー名を出力する。
%xってのが
>ログが生成されたスレッドのNDC(ネスト化診断コンテキスト) を出力する。
せんせい!よくわかりません!てか出力されてないし。
%mってのが
>ロギングイベントで設定されたメッセージを出力する。
私がお願いしたとおりにでています。てかコピペしたんだけど。
%nってのが
>プラットフォーム依存の改行文字を出力する。
次のログは改行後にでてくれるってわけね。
うーん。
これでもいい感じはするんだけど、日時とかほしいかも。
自分で作ってみましょうそうしましょう。
というわけでやってみた。
**好きな形で出力してみる。
まずはちょっと簡単な形で。
上の項の
>new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN);
を
>String LogPattern = "%p : %d{yyyy/MM/dd hh:mm:ss} : %c : %C : %n";
>PatternLayout layout = new PatternLayout(LogPattern);
にしてみたら。
実行結果!
>INFO : 2007/03/28 02:08:32 : Sample : Log4Jtest.test.dotcom.Log4jTest :
なんてでてきましたよ!
%Cは実行した時のクラス名???
じゃ%Cは別のクラスで実行したら変わるのかな?
さて次はこれをいろんなところで使ってみたいのです。
組み込んでみたいのです。
設定ファイルを使うやり方ってのも知りたいし。
まだまだお勉強します。
表示オプション
横に並べて表示:
変化行の前後のみ表示: