ここから本文です

解決済みの質問

Log4Jでファイルにログを出力したい

voewfyさん

Log4Jでファイルにログを出力したい

log4Jを使ってファイルにログを出力したいのですが、うまくいきません。以下、プロパティファイルとサンプルコードですが何がおかしいか教えて下さい。

(プロパティファイル)→log4j.propertiesという名前でソースやクラスと同じディレクトリに置きました。
## direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=mylog.log
log4j.appender.file.Append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1} - %m%n
(サンプルコード)
import java.io.*;
import java.util.logging.Logger;
import org.apache.log4j.*;

public class log4JTest {
static Logger logger = Logger.getLogger("Sample");
public static void main(String[] args) {
Logger logger = Logger.getLogger(log4JTest.class);
PropertyConfigurator.configure("log4j.properties");
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}

CLASSPATHを設定した後、コンパイルして実行してみたところ以下のようなエラーが出ました。
log4JTest.java:8: cannot find symbol
symbol : method getLogger(java.lang.Class<log4JTest>)
location: class java.util.logging.Logger
Logger logger = Logger.getLogger(log4JTest.class);
^
log4JTest.java:11: cannot find symbol
symbol : method debug(java.lang.String)
location: class java.util.logging.Logger
logger.debug("debug");
^
log4JTest.java:13: cannot find symbol
symbol : method warn(java.lang.String)
location: class java.util.logging.Logger
logger.warn("warn");
^
log4JTest.java:14: cannot find symbol
symbol : method error(java.lang.String)
location: class java.util.logging.Logger
logger.error("error");
^
log4JTest.java:15: cannot find symbol
symbol : method fatal(java.lang.String)
location: class java.util.logging.Logger
logger.fatal("fatal");
^
5 errors

補足
回答有り難うございます。import org.apache.log4j.*;のみにした所コンパイル出来ました。ただ実行すると
log4j:WARN No appenders could be found for logger (Sample).
log4j:WARN Please initialize the log4j system properly.
というエラーになってしまいます。。
(loggerは重複していたので、片方削除してどちらも試しても結果は同じでした。)
プロパティファイルも何か修正が必要なのでしょうか?何も分からずにすみません。。

違反報告

ベストアンサーに選ばれた回答

phinlodaさん

java.util.logging の Logger ではなく、org.apache.log4j.Logger を使うようにすればよいと思います。

import java.util.logging.Logger;
この行を削除するとどうなるでしょう?

あと、logger が static Logger logger と main の中にある Logger logger の 2つあるのはよくないと思います。

質問した人からのコメント

  • ありがとうございました。
  • コメント日時:2009/2/8 12:38:02

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 1点(5点満点中)1人が役に立つと評価しています。

知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:Java]

ただいまの回答者

11時52分現在

2821
人が回答!!

1時間以内に5,315件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する