- ベストアンサー
EclipseでJavaアプリ実行時のlogの格納場所と設定方法
- Eclipse3.4でJavaアプリを実行する際、logger.infoで出力されるログの格納場所を知りたいです。
- また、その出力先の設定方法についても教えてください。
- 具体的なコード例として提供したManySideクラス内でのlogger.info(manySide)のログ出力先を特定し、設定方法も解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>private static Logger logger = Logger.getRootLogger() >を見るように設定するにはどうしたらいいのでしょうか? getRootLoggerは使用したことないのでたぶんですが、 log4j.xmlにroot要素を追加することができるのでたぶんgetRootLoogerはそれに対応していると思います。 <root> <appender-ref ref="FILE"/> </root> >また設定ファイルが全くない場合には >そのログはどこにかかれるのでしょうか? Log4jのソースを軽く見てみたところlog4j.xml、log4j.propertiesファイルが存在しない場合、ログレベルがOFFの状態(初期設定)になっているのでどこにも出力されないのではないかと思います。 (出たとしても標準出力くらいだと思います。)
その他の回答 (1)
- sh_hirose
- ベストアンサー率66% (56/84)
log4j.xmlまたはlog4j.propertiesに記載されていると思います。
補足
ありがとうございます。 環境は以下の通りです。 OS:Fedora10 Java:Java(TM) SE Runtime Environment (build 1.6.0_13-b03) Eclipse:3.42 ただ単にライブラリとしてlog4j-1.2.14.jarを外部ライブラリとして参照しているだけであり og4j.xm、log4j.propertiesはありません。 そこで次の様にしました。 package org.fireproject.hibernatesample; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class ManyToOne { // private static Logger logger = Logger.getRootLogger(); private static Logger logger = Logger.getLogger(ManyToOne.class.getName());//追加 public static void main(String args[]) { DOMConfigurator.configure("log4j.xml");//追加 SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); List<OneSide> oneSideList = createAndSaveOneSide(sessionFactory); List<ManySide> manySideList = createAndSaveManySide(sessionFactory, oneSideList); manySideList = loadManySides(sessionFactory); updateOneSide(sessionFactory, oneSideList); for (Iterator<ManySide> itr = manySideList.iterator(); itr.hasNext();) { ManySide manySide = (ManySide) itr.next(); logger.info(manySide); } deleteAllManySide(sessionFactory); deleteOneSide(sessionFactory, oneSideList); manySideList = loadManySides(sessionFactory); deleteAllOneSide(sessionFactory);//追加 } ・・・・・・・・・・・・・・・・・・・・・・ log4j.xml:(プロジェクトトップに配置) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="File" value="log.txt" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%m%n" /> </layout> </appender> <category name="org.fireproject.hibernatesample"> <priority value="info" /> <appender-ref ref="FILE" /> </category> </log4j:configuration> するとプロジェクトのトップにあるファイルlog.txt にログがかれるようになりました。 ただしログは Logger.getLogger(ManyToOne.class.getName()) です。 private static Logger logger = Logger.getRootLogger() を見るように設定するにはどうしたらいいのでしょうか? また設定ファイルが全くない場合には そのログはどこにかかれるのでしょうか?
お礼
ありがとうございました。