プロが教えるわが家の防犯対策術!

を教えてください。
例えば

package org.fireproject.hibernatesample;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
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();

public static void main(String args[])
{
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
List oneSideList = createAndSaveOneSide(sessionFactory);
List manySideList = createAndSaveManySide(sessionFactory, oneSideList);
manySideList = loadManySides(sessionFactory);
updateOneSide(sessionFactory, oneSideList);
for (Iterator itr = manySideList.iterator(); itr.hasNext();)
{
ManySide manySide = (ManySide) itr.next();
logger.info(manySide);//<-----------------------
}
deleteAllManySide(sessionFactory);
deleteOneSide(sessionFactory, oneSideList);
manySideList = loadManySides(sessionFactory);
}


において
logger.info(manySide);
で出力されたログはどこにかかれるのでしょうか?
また、その出力先の設定方法も教えてください。

A 回答 (2件)

>private static Logger logger = Logger.getRootLogger()


>を見るように設定するにはどうしたらいいのでしょうか?

getRootLoggerは使用したことないのでたぶんですが、

log4j.xmlにroot要素を追加することができるのでたぶんgetRootLoogerはそれに対応していると思います。
<root>
<appender-ref ref="FILE"/>
</root>


>また設定ファイルが全くない場合には
>そのログはどこにかかれるのでしょうか?

Log4jのソースを軽く見てみたところlog4j.xml、log4j.propertiesファイルが存在しない場合、ログレベルがOFFの状態(初期設定)になっているのでどこにも出力されないのではないかと思います。
(出たとしても標準出力くらいだと思います。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/07 21:43

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



参考URL:http://www.javaroad.jp/opensource/js_log4j2.htm, …

この回答への補足

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

補足日時:2009/05/06 15:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!