約 5,908,869 件
https://w.atwiki.jp/myoss/pages/45.html
Tomcatのコンソール出力をLog4Jを使用してファイルに出力する方法を示す。 構成情報 Tomcat 5.5.9 JDK 1.5.0_04 Commons Logging 1.0.4 Log4J 1.2.12 設定方法 1.Commons loggingとLog4Jをダウンロードし、[$CATALINA_HOME]/common/libにコピーする。 2.以下の内容で、log4j.propertiesを、[$CATALINA_HOME]/common/classes直下に作成する。 log4j.rootLogger=debug,R log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=${catalina.home}/logs/tomcat.log log4j.appender.R.MaxFileSize=10MB log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n log4j.logger.org.apache.catalina=DEBUG, R 3.Tomcatを起動する。 おおぉー、今までコンソール出力されていたものが、[$CATALINA_HOME]/logs/tomcat.logに出力されてますね。 デバックモードやappenderを変えることで、実際の運用でも使用できそうですね。
https://w.atwiki.jp/tamotech/pages/50.html
Log4J Log4Jとは Jakartaプロジェクトで開発が進められているJavaプログラム用のログAPIである。 ログの出力先を様々に設定できる。 ファイル、OutputStream、java.io.Writer、リモートLog4Jサーバ、リモートUnix Syslogデーモン、NTイベントログなど Log4Jには以下の3つの主要コンポーネントがある。 Logger - ロギングを行う部分をグループ化し必要なグループのログだけを出力することを可能にする。カテゴリーに優先順位を付けることにより様々な出力方法を指定できる。 Appender - ログの出力先を指定する。 Layout - ログの出力フォーマットを指定する。 Log4Jは以下のログレベルを標準提供している(レベルが高い順)。利用者が任意のログレベルを追加することも可能。 FATAL - 致命的なエラー。プログラムの異常終了を伴うようなもの。 ERROR - 予期しないその他の実行エラー。 WARN - 警告。廃要素のAPIの使用やAPIの不適切な使用、エラーに近い事象など。 INFO - 情報。実行時の何らかの注目すべき事象(開始や終了など)。 DEBUG - デバッグ用の情報。システムの動作状況に関する詳細な情報。 TRACE - デバッグ情報よりも更に詳細な情報。 使うときのざっくりした流れは以下な感じ。 1.Loggerを作成する 2.Appenderを作成してLoggerにぶら下げる 3.Layoutを作成して、Appenderにぶら下げる 4.ログ出力をする。 上記手順の1~3(2~3?)は設定ファイル(log4j.properties)で外部ファイル化できる。 サンプルコード 上記までに学んだ内容でログ出力を行うサンプルコードを書いた。 Log4jSample.java package sandbox.log4j.sample1; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4jSample { public static void main(String[] args) { Log4jSample mainApp = new Log4jSample(); mainApp.execute(); } public void execute() { // Loggerインスタンスの生成. Logger logger = Logger.getLogger(Log4jSample.class); // log4j.propertiesを読み込む PropertyConfigurator.configure("bin/sandbox/log4j/sample1/log4j.properties"); // 各レベルでログを出力 logger.trace("TRACEログ"); logger.debug("DEBUGログ"); logger.info("INFOログ"); logger.warn("WARNログ"); logger.error("ERRORログ"); logger.fatal("FATALログ"); } } log4j.propertes # Appenderの定義. log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m%n log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=C \\Log4JTest\\Log4jSample.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d %5p %c{1} - %m%n # ルートカテゴリーの定義. log4j.rootCategory=INFO,stdout,file 実行するとコンソールには以下のとおりログが出力される。 2011-09-22 12 07 28,144 INFO Log4jSample - INFOログ 2011-09-22 12 07 28,144 WARN Log4jSample - WARNログ 2011-09-22 12 07 28,144 ERROR Log4jSample - ERRORログ 2011-09-22 12 07 28,144 FATAL Log4jSample - FATALログ また、C \\Log4JTest\\Log4jSample.logのファイルに上記と同じ内容のログが出力される。 サンプルコードを書いて rootCategory?rootLogger?という感じ。カテゴリ、ロガー、階層、log4j.propertiesの書き方などがまだよくわからん。 以下のように明示的にlog4j.propertiesの読み込みを記述しないと上手くいかなかった。(Webアプリケーションの場合クラスパスが通った場所にlog4j.propertiesを書いておけばこのようなコードは不要だったような気がしたが・・・) // log4j.propertiesを読み込む PropertyConfigurator.configure("bin/sandbox/log4j/sample1/log4j.properties"); 参考サイト TECHSCORE - Log4J Log4Jをいじる
https://w.atwiki.jp/ebi_xyz/pages/42.html
RESTfulプログラムのログ出力にcommons-logging+log4jを使ったのでメモ。 ■環境 Java 6 Eclipse 3.6 Tomcat 6 ■ライブラリについて 以下の2ファイルを使った。 commons-logging-1.1.1.jar log4j-1.2.16.jar それぞれ以下からダウンロード。展開したディレクトリ内から上記の2ファイルをlibディレクトリにコピーした。 commons-logging log4j Eclipseにて、ビルドパスにjarファイルを追加。 ■サンプルソース package ebi.sample; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.commons.logging.*; @Path("/hello") public class HelloWorld { public static Log log = LogFactory.getLog(HelloWorld.class); @GET @Path("/log") @Produces(MediaType.APPLICATION_XML) public String Log() { String xml = " result code 0 /code /result "; log.fatal("fatalメッセージ"); log.error("errorメッセージ"); log.warn("warnメッセージ"); log.info("infoメッセージ"); log.debug("debugメッセージ"); log.trace("traceメッセージ"); return xml; } } このサンプルを試す場合は、別途jax-rsの環境構築が必要。 ■設定ファイル WEB-INF/classにlog4j.xmlを作成。 以下は標準出力をINFO、ファイル出力をDEBUGに設定。 ログの出力先は「Tomcatインストールディレクトリ\logs\daily-log」に設定。 ?xml version="1.0" encoding="UTF-8" ? !DOCTYPE log4j configuration SYSTEM "log4j.dtd" log4j configuration xmlns log4j= http //jakarta.apache.org/log4j/ !-- コンソールにログを出力するConsoleAppenderをSTDOUTとして定義 -- appender name="STDOUT" class="org.apache.log4j.ConsoleAppender" !-- デフォルトのログレベル -- param name="threshold" value="info"/ !-- ログの出力形式を指定 -- layout class="org.apache.log4j.PatternLayout" param name="ConversionPattern" value="%d %-5p [%t] (%F %L) - %m%n"/ /layout /appender !--決められた期間でログを別ファイルに切り替えて書き込む DailyRollingFileAppenderをDAILYとして定義 -- appender name="DAILY" class="org.apache.log4j.DailyRollingFileAppender" !-- ログのファイル名 -- param name="file" value="logs/daily-log" / !-- デフォルトのログレベル -- param name="threshold" value="debug"/ !-- 日付が変わる瞬間daily-log-2002-06-23のような形式で現在のログがリネーム -- !-- すでにログが存在する場合、ファイルにログを追加 -- param name="append" value="true" / !-- ログの出力形式を指定 -- layout class="org.apache.log4j.PatternLayout" param name="ConversionPattern" value=" %c , %p , %d , %m %n" / /layout /appender !-- ログの設定 -- category name="ebi.sample.HelloWorld" appender-ref ref="STDOUT" / appender-ref ref="DAILY" / /category /log4j configuration 設定ファイルはappend,layout, categoryの3要素を設定。 他にroot要素が存在するが必要が無い場合は使わないようにする。 ■参考にしたサイト @IT:現場に活かすJakarta Project 第9回 Jakarta log4j.xml に設定するログレベルの整理 - @//メモ Javaの道:Log4J(2.基本操作) 2011-05-07
https://w.atwiki.jp/ack_sora/pages/16.html
1. プロジェクトの中に「lib」フォルダを作成し、「log4j-?.?.??.jar」をその中にコピー。 2. プロジェクトのプロパティ →「Javaのビルド・パス」、「ライブラリー」タブの「JARの追加」 →→「log4j-?.?.??.jar」を選択、OK。 ※jarファイルにはクラスファイルが含まれていて、このjarを使うように指定することで、中のクラスを利用できるようになる。 3. プロジェクト右クリック →「新規>ソースフォルダー」を選択、「src/main/resources」を作成。 →→「resources」右クリック →→→「新規>ファイル」を選択、「log4j.properties」を作成 ※log4j.propertiesの内容は別記。
https://w.atwiki.jp/nyk69/pages/26.html
log4j.propertiesの設定 log4j.category.org.seasar=DEBUG, C と書くとデバックモードで、実行しようとするSQLや、エラーを出力してくれる。 log4j.category.org.seasar=INFO, C と書くとデバックモードでのメッセージの出力をしないように設定できる。 counter -
https://w.atwiki.jp/syusei/pages/13.html
log4j.propetiesのサンプル log4j.rootCategory=INFO, STDOUT # stdout log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern=%d{HH mm ss} %-5p %m (%c)%n
https://w.atwiki.jp/dotcom/pages/130.html
使い方は別記事で。。。 Eclipseで使ってみる(初歩の初歩 ログの内容をかっこよく作る(Layout) 外部ファイルにログをはく
https://w.atwiki.jp/dotcom/pages/140.html
Log4Jがなんとなくできそうな気がした(気のせいかも)ので続けてお勉強してみることに。 Appenderってのを使うですよ。いきますよ。 出力先を指定するんです。 つまりコンソールにばっかり出してるだけじゃ能がないってやつをファイルとかに出力したいと思ったのです。 目次 目次 参考資料 とりあえず作ってみる。コピペしてゴー。 うまくいかないので参考サイトをよく読んでみる。 org.apache.log4j.Appender org.apache.log4j.WriterAppender 外部ファイルにログをはきだしたい、を作ってみるテスト・サンプルで試してみる 実行結果! 何度も実行してもファイルの内容を上書きしない出力方法にしてみる 参考資料 こちらを参考にさせていただいてやってみますよ。 http //www.techscore.com/tech/ApacheJakarta/Log4J/1-2.html とりあえず作ってみる。 やってみないとわからないですはい。 コピペしてゴー。 こういうことなのかしら?って思ってこれで実行してみたの。 コピペしちゃった。手で打たないと覚えないのにね。。。 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.*がいりますな。 もしかしてこれじゃん?これ!!!こっちー! 外部ファイルにログをはきだしたい、を作ってみる 少しだけ利口になったような気がしたのでサンプルを動かしてみます。 テスト・サンプルで試してみる 使わせていただきました。ありがとうございます。 http //www.techscore.com/tech/ApacheJakarta/Log4J/3.html 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); にしてみました。 成功。 これで簡単な形で外部ファイルに書けるようになったわ。 次はフォーマットをきれいにしてみようっと。 じかんとかいれてー。
https://w.atwiki.jp/kameda/pages/36.html
https://w.atwiki.jp/dotcom/pages/131.html
Log4jをEclipseで使った時のメモメモ。 とりあえず使ってみるダウンロードとインストール 展開する 環境変数の設定 実行確認 Eclipseで使ってみる。プロジェクトにlog4jのjarを追加する サンプルを動かしてみる。 参考資料 とりあえず使ってみる なにはともあれ使ってみようっと。 ダウンロードとインストール http //ftp.kddilabs.jp/infosystems/apache/logging/log4j/1.2.14/ これにしてみた! logging-log4j-1.2.14.zip 展開する どこに入れようかな。 logging-log4j-1.2.14.zipをダブルクリックして展開。 ZIPだからね。 これをまずはわかりづらいのでCドライブ直下にいれちゃおうそうしよう。 C \logging-log4j-1.2.14 こんな感じかな。 環境変数の設定 環境変数の設定で CLASSPATHに %LOG4J_HOME%\dist\lib\log4j-1.2.14.jar LOG4J_HOME C \logging-log4j-1.2.14 とするとPATHがとおるです。 実行確認 どうやらこちらはコンパイルと実行時に使うんですって。 ここを参考にやってみる。 http //www.javaroad.jp/opensource/js_log4j1.htm コマンドプロンプトからなら上のサイトさんに書いてあったので実行はうまくいきました。 でも。。。うーーーーー。 Eclipseからだとどうなるんだ? Eclipseで使ってみる。 さっそくJavaプロジェクトでクラス作ってこんな一文を入れてみたら import org.apache.log4j.*; なにも考えずにimportしても「ねーよ!」って怒られました。 ううう。 というわけでプロジェクトに追加してみます。 プロジェクトにlog4jのjarを追加する プロパティを開く。 「Javaのビルド・パス」の「ライブラリー」タブを選ぶ。 「ビルド・パス上のJARおよびクラス・フォルダー」の中にlog4jがなかったら追加。 「外部JARの追加」ボタンをクリック。 先ほどのjarファイルの場所を入れる。 とりあえずこんなのいれてみた。 C \logging-log4j-1.2.14\dist\lib\log4j-1.2.14.jar あれ? ここでCLASSPATH設定したの使えばいいのかな。 LOG4J_HOME\dist\lib\log4j-1.2.14.jar これでいいんじゃ? せっかく設定したんだしね。あとでためしてみよー これってEclipseのpluginのとこにjarをぶちこんでもいけるですか? 今度試してみよー。 今度とか後でとか多すぎ。 続けます。 OKボタン押すと「ワークスペースをビルド中」とかってしばらくEclipseががんばります。 がんばれーふぁいとー! すると、先ほどとりあえず書いた import org.apache.log4j.*; がエラーじゃなくなってるじゃありませんか! でもまだ何も書いてないから黄色い波線になってるけどね。 インポートされた org.apache.log4j は一度も使用されていません。 うんうん。じゃクラスにサンプル貼り付けちゃおうっと。 サンプルを動かしてみる。 いつもお世話になってますなこちらのサイトから。 http //www.javaroad.jp/opensource/js_log4j1.htm しつこいけどHelloWorld! もうそろそろHelloComsCom!とかにしてもいいんじゃ?いやいやいやいや。 static Logger logger = Logger.getLogger(○○○.class); public static void main(String argv[]) { BasicConfigurator.configure(); logger.debug("Hello world."); logger.info("What a beatiful day."); } クラスの中にこれをいれてみたです。 ○○○のところは入れたとこのクラス名を。 実際はこんな感じ package log4jtest.dotcom; import org.apache.log4j.*; public class DotComLog4jTest { static Logger logger = Logger.getLogger(DotComLog4jTest.class); public static void main(String argv[]) { BasicConfigurator.configure(); logger.debug("Hello world."); logger.info("What a beatiful day."); } } おし、これでコンパイルは通った。実行だー!いけーっ! コンソールに 0 [main] DEBUG log4jtest.dotcom.DotComLog4jTest - Hello world. 15 [main] INFO log4jtest.dotcom.DotComLog4jTest - What a beatiful day. なんででやがりました。どうやら成功のようです。やりました。 xmlの設定も何もなしにここまでできます。 んじゃこれをどう使うのかっていいますと。 えっと。。。 もちょっとお勉強します。 参考資料 http //takeoba.cool.ne.jp/Jakarta/log4jInstall.htm ありがとうございます。 googleさんとそこで引っかかってくれるサイトさんがいらしゃらなければ私何もできません。