Ich habe mit diesem Problem im Thema gekämpft.Wie wird das aktuelle Clientverzeichnis zum Protokolldateinamen hinzugefügt?
habe ich versucht, so etwas wie dieses:
String sCurrDir = System.getProperty("user.dir");
int nLastBSlash = sCurrDir.lastIndexOf('/');
System.setProperty("current.folder", sCurrDir.substring(nLastBSlash + 1));
und addierten die folgenden zu den log4j.properties:
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="DEBUG" />
<param name="append" value="true" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="50" />
<param name="File" value="./log/${current.folder}-wcss-simulator-${current.date}.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS}\t %-5p\t [%X{ThreadId}]\t %X{MethodName}\t - %m%n" />
</layout>
</appender>
Aber der Dateiname beginnt erst mit einem Bindestrich.
Log4j wird beim Start der Anwendung initialisiert. Wenn Sie das wirklich erreichen wollen, müssen Sie einen eigenen Appender hinzufügen, der org.apache.log4j.RollingFileAppender erweitert. –
Ihre Frage ist nicht eindeutig. Zuallererst müssen Sie log4j2 und nicht nur log4j eindeutig angeben, da beide APIs sehr unterschiedlich sind. Sie haben bereits einen DOT (.) Im Dateiparameter, der den aktuellen Ordner darstellt. Sie sollten log4j2.properties anstelle von log4j.properties verwenden. – VivekRatanSinha