2

tomcat5.5.33に同梱されているバージョンのprocrunを使用してJavaバッチプロセスをインストールしました。

   Commons Daemon Service Runner version 1.0.5.0/Win32 (Jan  5 2011) 
   Copyright (c) 2000-2011 The Apache Software Foundation.

インストールでは、(他のJVMオプションの中で)次のように指定します。

  --JvmOptions="-Duser.dir=C:\LOCAL\serverapps"

log4j.propertiesの構成には次のものが含まれます。

   log4j.appender.InfoLogFile.File=../logs/info.log

ただし、info.logファイルは次の場所に書き込まれています。

   C:\WINDOWS\logs

私はuser.dir多くの異なるポイントでの値をチェックしました、そしてそれは常にC:\LOCAL\serverappsです。

しかし、log4jはあたかもuser.dir=C:\Windows\System32(またはのその他のsubir C:\Windows)のように動作しています。

log4jソース(1.2.16)からわかることから、場所から相対的なパスを作成すると主張するファイルクラスとファイルクラスFileAppenderのみを扱います。java.io.FileOutputStreamuser.dir

私はこの問題を回避しましたが、興味があります。他の誰かがこのタイプの動作に遭遇したことがありますか?もしそうなら、実際に何が起こっているのですか?

4

3 に答える 3

0

FileAppenderは、相対パスを指定すると、ユーザーのホームディレクトリではなく、現在の作業ディレクトリを使用してファイルを作成します。

ファイル名内に${user.dir}を渡す必要があります。

SRC: http ://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java?view=markup

編集:修正については以下のコメントを参照してください-user.dir!= user.home

http://bugs.sun.com/view_bug.do?bug_id=4117557

于 2011-08-26T12:20:23.507 に答える
0

私はで使用${user.dir}しました、lo4j.propertiesそしてそれは働きました。やってみました?

log4j.appender.InfoLogFile.File=${user.dir}/logs/info.log
于 2011-08-26T12:18:17.317 に答える
0

PhilWのコメントは、元の質問に対する正解を示しています。つまり、Oracle / Sunは、コマンドラインを介してが設定されている場合、問題http://bugs.sun.com/view_bug.do?bug_id=4117557を宣言します。user.dirこれが、ログファイルが書き出されるときに相対パスが正しく理解されない理由です。

Phil、Amir、および私が提案するように、絶対パスを使用することで(${user.dir}JVMが内部で値を誤った場合でも、その時点で信頼できる--というプレフィックスを付けることもできます)、問題を完全に回避できます。

于 2012-03-13T18:41:24.810 に答える