Ich konnte keine direkte Lösung finden, indem ich die richtige Eigenschaft in log4j.properties festlegte. Ich kann jedoch zwei Lösungen vorschlagen. Wenn Sie den relativen Pfad in den Eigenschaften festlegen, wird der relative Pfad nicht zum Projekt (oder jar), sondern zum Verzeichnis, in dem Sie Ihre App ausführen, relativiert. Wenn Sie also zum Beispiel einen Dienst erstellen, der Ihr jar aufruft, wird er es aus dem Verzeichnis /etc/init.d aufrufen, und Ihre Protokolle (höchstwahrscheinlich) werden nirgendwohin führen.
Eine der Optionen besteht darin, eine Umgebungsvariable festzulegen, in der Sie Ihre Protokolle speichern möchten. Log4j behandelt Umgebungsvariablen. Just set log4j.appender.file.File=${varname}
Eine weitere Option, wenn Sie Shell-Skript verwenden, um Ihren Dienst/app/jar, cd zu seinem Verzeichnis vor dem Ausführen starten (vorausgesetzt, Sie haben Ihren Pfad log4j.appender.file.File=./logs/myOutput.log
gesetzt). Etwas wie folgt aus:
process="/path/to/your/jar/test.jar"
processName=`basename $process`
processDir=`dirname $process`
cd $processDir
java -jar "./$processName"
in diesem Fall Ihre Protokolle werden in /path/to/your/jar/logs/myOutput.log
Sie sich nicht src/main/resources enthalten sollte, da dies zunächst nur in Ihrem IDE/Projekt Quelle verfügbar sein wird, und zum anderen Ende als Klassenpfad in einem Container wie ein Glas oder ein Krieg. – Stefan