1

Windows 2003 サーバー R2 でいくつかの Java プロセスを実行しています。Apache log4j-1.2.8 を使用しています。私のすべてのプロセスは、異なるパラメーターの例を持つ1つのjarファイルを介して呼び出されました

    java -jar process.jar one 
    java -jar process.jar two
    java -jar process.jar three

そして、log4j.propertiesを次のように構成します

#=============================== 
# Declare Variables
#===============================
logpath=${user.dir}/log/
simple_pattern=%d{yyyy-MM-dd HH:mm:ss.SSS}%-5x - %m%n
backup_pattern='.'yyyy-MM-dd

#===============================
# PROCESS & STANDARD OUTPUT
#===============================
log4j.logger.process.Process=NULL,proclog,procstdout
log4j.appender.proclog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.proclog.File=${logpath}process.log
log4j.appender.proclog.DatePattern=${backup_pattern}
log4j.appender.proclog.layout=org.apache.log4j.PatternLayout
log4j.appender.proclog.layout.conversionPattern=${simple_pattern}

log4j.appender.procstdout=org.apache.log4j.ConsoleAppender
log4j.appender.procstdout.layout=org.apache.log4j.PatternLayout
log4j.appender.procstdout.layout.ConversionPattern=${simple_pattern}

#===============================
# ONE
#===============================
log4j.logger.process.log.One=NULL,one
log4j.appender.one=org.apache.log4j.DailyRollingFileAppender
log4j.appender.one.File=${logpath}one.log
log4j.appender.one.DatePattern=${backup_pattern}
log4j.appender.one.layout=org.apache.log4j.PatternLayout
log4j.appender.one.layout.conversionPattern=${simple_pattern}

#===============================
# TWO
#===============================
log4j.logger.process.log.Two=NULL,two
log4j.appender.two=org.apache.log4j.DailyRollingFileAppender
log4j.appender.two.File=${logpath}two.log
log4j.appender.two.DatePattern=${backup_pattern}
log4j.appender.two.layout=org.apache.log4j.PatternLayout
log4j.appender.two.layout.conversionPattern=${simple_pattern}

#===============================
# THREE
#===============================
log4j.logger.process.log.Three=NULL,three
log4j.appender.three=org.apache.log4j.DailyRollingFileAppender
log4j.appender.three.File=${logpath}three.log
log4j.appender.three.DatePattern=${backup_pattern}
log4j.appender.three.layout=org.apache.log4j.PatternLayout
log4j.appender.three.layout.conversionPattern=${simple_pattern}

初めてプロセスアペンダーを使用するのは単一のロガーであり、今ではそれを1つ、2つ、3つのロガーに分けています。Windowsスケジュールによって実行される私のプロセスは1分ごとにスケジュールされます。

そう。log4jがバックアップファイルを生成できない理由がわからないという大きな問題があります。しかし、コマンドラインでmanualを実行するとOKです。

4

3 に答える 3

2

スケジューラーによって実行されたとき、log4j.properties ファイルはクラスパスにありますか? 過去に同様の問題がありましたが、構成ファイルがクラスパスにないことが原因でした。

これを process.jar ファイルに含めるか、次のように場所を指定できます。

java -Dlog4j.configuration=file:///path/to/log4j.properties -jar process.jar one

于 2008-10-06T02:25:51.637 に答える
0

javadocs によると、追加はデフォルトである必要がありますが、あいまいさを取り除くために構成ファイルで指定する価値があります。運が良ければ、問題が解決するかもしれません

log4j.appender.three.Append=true
于 2008-10-06T07:26:15.930 に答える
-1

どうもありがとう、私はあなたの解決策を再試行します。

そして今、私のスケジュールはbgprocess.batを介してプロセスを実行しました

bgprocess.bat

@echo off
set CLASSPATH=.;%CLASSPATH%
set path=C:\j2sdk1.4.2\bin;%path%
javaw -jar process.jar %1

process.jar マニフェスト.mf

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2 (IBM Corporation)
Main-Class: process.Process
Class-Path: ./lib/Utility.jar ./lib/DB2LibRAD.jar ./lib/rowset.jar ./l
 ib/log4j-1.2.8.jar ./lib/com.ibm.mq.jar .

プロセスディレクトリ

   - process.jar
   - bgprocess.bat
   - lib <dir>
               - log4j-1.2.8.jar
               - com.ibm.mq.jar
               - connector.jar
               - DB2LibRAD.jar
               - rowset.jar
               - Utility.jar                    
   - log <dir>
               - one.log
               - two.log
               - three.log
               - process.log

すべてのログ ファイルは正常に機能しますが、バックアップ時間が経過すると切り捨てられ、最初の行から新しいログが開始されます。

于 2008-10-06T02:48:54.257 に答える