- PR -

log4jのログ出力先指定について。

1
投稿者投稿内容
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-14 10:06
こんにちわ。クボタと申します。

log4jを使ってログ出力を行っているのですが、出力先が
C:\Documents and Settings\kubota\logfile.log
になってしまいます。
相対パス指定で出力先を/WEB-INF/あたりにしたいのですが。

環境は
j2sdk1.4.0
tomcat4.0.3
log4j1.2.7
eclipse2.0.1を使用しています。

プロパティファイルの内容は
log4j.rootCategory=INFO, A1
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.file=logfile.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
です。
プログラム中ではlog4j.Loggerクラスを継承したクラスをつくり(例UseLog)、
UseLog.logger.info("log test info");
として出力しています。
例外処理にはUseLog内に
public static String getStackTrace(Exception e){
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return sw.toString();
}
を定義し例外発生時に
UseLog.logger.info(UseLog.getStackTrace(e));
としてスタックトレースを吐き出しています。

初めてのJava開発でわからないことだらけなので、お勧めのログ出力処理について教えていただけたら幸いです。

では、よろしくお願いします。
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-11-14 11:03
log4j.appender.A1.file=logfile.log
の部分にパスを書くのでは解決しないですか?

あと、継承したクラスを作るのは何か意味があるのでしょうか。
スタックトレースを出したいのなら、
logger.info("message", ex);
のようにすればいいと思うのですが・・・。
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-15 09:47
お返事ありがとうございます。

>log4j.appender.A1.file=logfile.log
>の部分にパスを書くのでは解決しないですか?
確かに
log4j.appender.A1.file=/Program Files/Apache Tomcat 4.0/webapps/log1/logfile.log
と書けばそこにログが吐き出されるのですが、この方法しかないのでしょうか?

>あと、継承したクラスを作るのは何か意味があるのでしょうか。
>スタックトレースを出したいのなら、
>logger.info("message", ex);
>のようにすればいいと思うのですが・・・。
素人っぷりを発揮してしまい申し訳ありません。
確かにその方法でスタックトレースが出ました。
確認なんですけど、その方法ではログ出力処理を記述するクラスで
Logger logger = Logger.getLogger(xxx.class);
と定義してlogger.info("message", ex);ですよね。
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-11-15 13:54
>Logger logger = Logger.getLogger(xxx.class);
>と定義してlogger.info("message", ex);ですよね。

そうです。

>この方法しかないのでしょうか?

Webアプリのベースディレクトリからの相対パス指定でやりたい
ということでしょうか。
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-15 14:48
早速のお返事ありがとうございます。

>Webアプリのベースディレクトリからの相対パス指定でやりたい
>ということでしょうか。

そのとおりです。
プロパティファイルで
log4j.appender.A1.file=logfile.log
こう指定すると
C:\Documents and Settings\kubota\logfile.log
に吐き出される理由もわかりません。
eclipseに関係しているのでしょうか?

どうかご教授お願いします。
pon
常連さん
会議室デビュー日: 2002/05/21
投稿数: 43
投稿日時: 2002-11-15 15:02
Tomcatの起動方法によって違ったりしませんか?
たとえば<CATLINA_HOME>/bin/startup.batとスタート−>プログラム・・・で。
その辺がヒントになるかと・・・
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-15 16:41
もうponさんには足を向けて眠れないです。

log4j.appender.A1.file=../webapps/example/log/logfile.log
として<CATLINA_HOME>/bin/startup.batからtomcatを起動したところ
<CATLINA_HOME>/webapps/example/log/
にログが吐き出されました。

これでログに関しては形になりそうな気がします。
本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)