• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Eclipse3.4でJavaアプリ実行時のlogの格納場所)

EclipseでJavaアプリ実行時のlogの格納場所と設定方法

このQ&Aのポイント
  • Eclipse3.4でJavaアプリを実行する際、logger.infoで出力されるログの格納場所を知りたいです。
  • また、その出力先の設定方法についても教えてください。
  • 具体的なコード例として提供したManySideクラス内でのlogger.info(manySide)のログ出力先を特定し、設定方法も解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.2

>private static Logger logger = Logger.getRootLogger() >を見るように設定するにはどうしたらいいのでしょうか? getRootLoggerは使用したことないのでたぶんですが、 log4j.xmlにroot要素を追加することができるのでたぶんgetRootLoogerはそれに対応していると思います。 <root> <appender-ref ref="FILE"/> </root> >また設定ファイルが全くない場合には >そのログはどこにかかれるのでしょうか? Log4jのソースを軽く見てみたところlog4j.xml、log4j.propertiesファイルが存在しない場合、ログレベルがOFFの状態(初期設定)になっているのでどこにも出力されないのではないかと思います。 (出たとしても標準出力くらいだと思います。)

reiman
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.1

log4j.xmlまたはlog4j.propertiesに記載されていると思います。

参考URL:
http://www.javaroad.jp/opensource/js_log4j2.htm,http://himtodo.fc2web.com/java/log4j.html
reiman
質問者

補足

ありがとうございます。 環境は以下の通りです。 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() を見るように設定するにはどうしたらいいのでしょうか? また設定ファイルが全くない場合には そのログはどこにかかれるのでしょうか?

関連するQ&A