Почему log4j не может генерировать файлы резервных копий? - PullRequest
1 голос
/ 06 октября 2008

Я запускаю некоторые процессы Java на Windows 2003 server R2 Я использую 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 - единственный регистратор, и теперь я отделяю это один, два и три регистратора. мои процессы выполняются по расписанию Windows каждую 1 минуту.

Итак. У меня большая проблема Я не знаю, почему log4j не может генерировать резервные файлы. но когда я выполняю инструкцию из командной строки, это нормально.

Ответы [ 3 ]

2 голосов
/ 06 октября 2008

Является ли ваш файл log4j.properties в пути к классам при выполнении планировщиком? В прошлом у меня была похожая проблема, и это было связано с отсутствием файла конфигурации в пути к классам.

Вы можете включить его в файл process.jar или указать его местоположение следующим образом:

Java -Dlog4j.configuration = Файл: ///path/to/log4j.properties -jar process.jar one

0 голосов
/ 06 октября 2008

В соответствии с javadocs, добавление должно быть значением по умолчанию, но его стоит указать в файле конфигурации, чтобы устранить неоднозначность. Если повезет, это может решить вашу проблему

log4j.appender.three.Append=true
0 голосов
/ 06 октября 2008

Большое спасибо, я попробую еще раз для вашего решения.

и сейчас Мой график выполнял мои процессы через 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

и все файлы журналов работают нормально, но по истечении времени резервного копирования будет усечено и начнет новый журнал с первой строки.

...