我正在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}
我第一次使用进程appender是单一记录器,现在我把它分开了 到一个,两个和三个记录器。 我的进程每隔1分钟由Windows计划执行一次。
因此。我遇到了大问题 我不知道为什么log4j无法生成备份文件。 但是当我通过命令行执行手动时它没问题。
答案 0 :(得分:2)
调度程序执行时,log4j.properties文件是否在类路径中?我过去遇到过类似的问题,原因是配置文件不在类路径中。
您可以将其包含在process.jar文件中,或者像下面这样指定其位置:
的java -Dlog4j.configuration =文件:///path/to/log4j.properties -jar process.jar one
答案 1 :(得分:0)
根据javadocs,追加应该是默认值,但是值得在配置文件中指定它以消除歧义。幸运的话,它可能会解决您的问题
log4j.appender.three.Append=true
答案 2 :(得分:-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
并且所有日志文件正常工作但通过备份时间 它将截断并在第一行开始新的日志。