「Log4j/外部ファイルにログをはく」の編集履歴(バックアップ)一覧はこちら
「Log4j/外部ファイルにログをはく」(2007/03/28 (水) 15:01:20) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
Log4Jがなんとなくできそうな気がした(気のせいかも)ので続けてお勉強してみることに。
Appenderってのを使うですよ。いきますよ。
出力先を指定するんです。
つまりコンソールにばっかり出してるだけじゃ能がないってやつをファイルとかに出力したいと思ったのです。
----
*目次
#contents
----
*参考資料
こちらを参考にさせていただいてやってみますよ。
&html(<a href="http://www.techscore.com/tech/ApacheJakarta/Log4J/1-2.html" target=_blank>http://www.techscore.com/tech/ApacheJakarta/Log4J/1-2.html</a>)
----
*とりあえず作ってみる。
やってみないとわからないですはい。
**コピペしてゴー。
こういうことなのかしら?って思ってこれで実行してみたの。
コピペしちゃった。手で打たないと覚えないのにね。。。
>package Log4Jtest.test.dotcom;
>import org.apache.log4j.*;
>
>public class Log4jTest {
> public static void main(String argv[]) {
> Logger logger = Logger.getLogger("Sample");
>// Appenderインスタンスの生成
> Appender appender = new ConsoleAppender();
> logger.addAppender(appender);
> logger.info("This is info.");
> }
>}
実行結果
>log4j:ERROR No output stream or file set for the appender named [null].
怒られた(ノ▽`)
赤文字でしたよ!
名前がnullですか。ほう。。。?
そもそもちゃんと理解してるのかい私。
というわけで
**うまくいかないので参考サイトをよく読んでみる。
先のほうも読んでから実行ないとね。
Appenderについてお勉強しなおし。
**org.apache.log4j.Appender
インタフェースです。
Loggerに出力するときはこのインタフェースを使うんですね。
私いつもimportで
>org.apache.log4j.*;
って省略してるから気づかなかったわ。
もひとつあるわ。もしかして私がやりたいのってこれ?
**org.apache.log4j.WriterAppender
こちらはクラス。
OutputStreamとかに出力の時はこっちらしいです。
java.io.*がいりますな。
もしかしてこれじゃん?これ!!!こっちー!
----
*外部ファイルにログをはきだしたい、を作ってみる
少しだけ利口になったような気がしたのでサンプルを動かしてみます。
**テスト・サンプルで試してみる
使わせていただきました。ありがとうございます。
&html(<a href="http://www.techscore.com/tech/ApacheJakarta/Log4J/3.html" target=_blank>http://www.techscore.com/tech/ApacheJakarta/Log4J/3.html</a>)
Log4jTestクラスの中をこんな風にしてみた。
> public static void main(String argv[]) {
>
> //org.apache.log4j.PatternLayoutの生成
> PatternLayout layout = new PatternLayout();
>
> //出力ファイル名
> String file = "sample.log";
>
> //java.io.Writerオブジェクト
> //org.apache.log4j.WriterAppenderオブジェクト
> Writer writer = null;
> WriterAppender appender = null;
>
> try{
> writer = new FileWriter(file);
> appender = new WriterAppender(layout,writer);
> }catch(IOException e){
>
> }
>
> Logger logger = Logger.getLogger("Sample");
> logger.addAppender(appender);
> logger.info("This is info.");
>
> System.out.println("おわったよん");
>
> }
ファイルに書き出すので実行してもコンソールに何もでない。
それは寂しかったのでとりあえず最後に終わりメッセージを。
java.io.Writerも使うので
>import java.io.*;
も忘れずに。
>String file = "sample.log";
出力ファイル名がファイル名だけ。。。デフォルトで今いる場所に作られるのね。
ってことはEclipseならば、Log4jTestクラスを作ったプロジェクトのフォルダの中にあるってことだ。
workspaceフォルダの下の層を探そう。
そうをさがそう。
ベタなシャレじゃありませんよ。
**実行結果!
sample.logを見つけて開いてみると、できてました。
>This is info.
って入ってました。万歳。
とりあえずこれでできたようだわ。
念のためも一回実行してみよ。。。とおもったら案の定、ファイル上書きされてた(ノ▽`)
だーよねー。
というわけでちょと形を変えてみたですよ。
**何度も実行してもファイルの内容を上書きしない出力方法にしてみる
上の
>writer = new FileWriter(file);
を
>writer = new FileWriter(file,true);
にしてみました。
成功。
これで簡単な形で外部ファイルに書けるようになったわ。
次はフォーマットをきれいにしてみようっと。
じかんとかいれてー。
Log4Jがなんとなくできそうな気がした(気のせいかも)ので続けてお勉強してみることに。
Appenderってのを使うですよ。いきますよ。
出力先を指定するんです。
つまりコンソールにばっかり出してるだけじゃ能がないってやつをファイルとかに出力したいと思ったのです。
----
*目次
#contents
----
*参考資料
こちらを参考にさせていただいてやってみますよ。
&html(<a href="http://www.techscore.com/tech/ApacheJakarta/Log4J/1-2.html" target=_blank>http://www.techscore.com/tech/ApacheJakarta/Log4J/1-2.html</a>)
----
*とりあえず作ってみる。
やってみないとわからないですはい。
**コピペしてゴー。
こういうことなのかしら?って思ってこれで実行してみたの。
コピペしちゃった。手で打たないと覚えないのにね。。。
> package Log4Jtest.test.dotcom;
> import org.apache.log4j.*;
>
> public class Log4jTest {
> public static void main(String argv[]) {
> Logger logger = Logger.getLogger("Sample");
> // Appenderインスタンスの生成
> Appender appender = new ConsoleAppender();
> logger.addAppender(appender);
> logger.info("This is info.");
> }
> }
実行結果
>log4j:ERROR No output stream or file set for the appender named [null].
怒られた(ノ▽`)
赤文字でしたよ!
名前がnullですか。ほう。。。?
そもそもちゃんと理解してるのかい私。
というわけで
**うまくいかないので参考サイトをよく読んでみる。
先のほうも読んでから実行ないとね。
Appenderについてお勉強しなおし。
**org.apache.log4j.Appender
インタフェースです。
Loggerに出力するときはこのインタフェースを使うんですね。
私いつもimportで
>org.apache.log4j.*;
って省略してるから気づかなかったわ。
もひとつあるわ。もしかして私がやりたいのってこれ?
**org.apache.log4j.WriterAppender
こちらはクラス。
OutputStreamとかに出力の時はこっちらしいです。
java.io.*がいりますな。
もしかしてこれじゃん?これ!!!こっちー!
----
*外部ファイルにログをはきだしたい、を作ってみる
少しだけ利口になったような気がしたのでサンプルを動かしてみます。
**テスト・サンプルで試してみる
使わせていただきました。ありがとうございます。
&html(<a href="http://www.techscore.com/tech/ApacheJakarta/Log4J/3.html" target=_blank>http://www.techscore.com/tech/ApacheJakarta/Log4J/3.html</a>)
Log4jTestクラスの中をこんな風にしてみた。
> public static void main(String argv[]) {
>
> //org.apache.log4j.PatternLayoutの生成
> PatternLayout layout = new PatternLayout();
>
> //出力ファイル名
> String file = "sample.log";
>
> //java.io.Writerオブジェクト
> //org.apache.log4j.WriterAppenderオブジェクト
> Writer writer = null;
> WriterAppender appender = null;
>
> try{
> writer = new FileWriter(file);
> appender = new WriterAppender(layout,writer);
> }catch(IOException e){
>
> }
>
> Logger logger = Logger.getLogger("Sample");
> logger.addAppender(appender);
> logger.info("This is info.");
>
> System.out.println("おわったよん");
>
> }
ファイルに書き出すので実行してもコンソールに何もでない。
それは寂しかったのでとりあえず最後に終わりメッセージを。
java.io.Writerも使うので
>import java.io.*;
も忘れずに。
>String file = "sample.log";
出力ファイル名がファイル名だけ。。。デフォルトで今いる場所に作られるのね。
ってことはEclipseならば、Log4jTestクラスを作ったプロジェクトのフォルダの中にあるってことだ。
workspaceフォルダの下の層を探そう。
そうをさがそう。
ベタなシャレじゃありませんよ。
**実行結果!
sample.logを見つけて開いてみると、できてました。
>This is info.
って入ってました。万歳。
とりあえずこれでできたようだわ。
念のためも一回実行してみよ。。。とおもったら案の定、ファイル上書きされてた(ノ▽`)
だーよねー。
というわけでちょと形を変えてみたですよ。
**何度も実行してもファイルの内容を上書きしない出力方法にしてみる
上の
>writer = new FileWriter(file);
を
>writer = new FileWriter(file,true);
にしてみました。
成功。
これで簡単な形で外部ファイルに書けるようになったわ。
次はフォーマットをきれいにしてみようっと。
じかんとかいれてー。
表示オプション
横に並べて表示:
変化行の前後のみ表示: