1

我在 Windows 2003 服务器 R2 上运行一些 java 进程,我使用的是 Apache log4j-1.2.8。我的所有进程都通过一个具有不同参数示例的 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}

我第一次使用进程附加程序是单个记录器,现在我将它分成一个、两个和三个记录器。我的 Windows 进程每 1 分钟执行一次。

所以。我遇到了大问题,我不知道为什么 log4j 无法生成备份文件。但是当我通过命令行执行手动时就可以了。

4

3 回答 3

2

当调度程序执行时,您的 log4j.properties 文件是否在类路径中?我过去也遇到过类似的问题,这是由于配置文件不在类路径中。

你可以将它包含在你的 process.jar 文件中,或者像这样指定它的位置:

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

于 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 manifest.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 回答