2010-12-29 21 views
3

Ich benutze org.apache.tools.ant.listener.Log4jListener, um die Protokollierung mit meinem Ant-Skript zu verwalten. Das Ameisen-Skript ist in hohem Maße konfigurierbar und so konzipiert, dass es auf verschiedene Arten mit unterschiedlichen Parametern ausgeführt werden kann. Daher muss ich in der Lage sein, in zur Laufzeit angegebenen Dateien zu loggen. Ich habe eine log4j.properties, die eine Protokolldatei angibt, die build.log sein soll, und trotz meiner Versuche, Ameisenneudefinitionseigenschaften zu starten, die in log4j.properties definiert sind, waren erfolglos.Konfigurieren von log4j zur Laufzeit

Der Build ignoriert sie und schreibt weiterhin in build.log. Ich habe nicht viel Unterstützung beim Schreiben in benutzerdefinierte Dateien gefunden, es sei denn, sie befinden sich in Java mit ihrer Logger-Klasse.

Vielleicht denke ich das falsch durch. log4j.properties wird nicht wie eine Eigenschaftendatei in einem ant-Skript behandelt (also über die Befehlszeile außer Kraft gesetzt)? Gibt es eine Möglichkeit, dies intelligent zu tun, ohne eine benutzerdefinierte Aufgabe oder etwas zu schreiben?

Antwort

1

Sie richten Ihre log4j.properties-Datei mit einer Systemeigenschaft ein, die Sie dynamisch in der Befehlszeile definieren können. Die folgende Eigenschaft ist "$ {logfile.name}". Ein Beispiel log4j Konfiguration so sein würde:

# logfile is set to be a RollingFileAppender 
log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=${logfile.name} 
log4j.appender.logfile.MaxFileSize=10MB 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{[email protected]\:mm\:ss,SSS}\:%c - %m%n 

Die Option Befehlszeile eine Eigenschaft passieren, wenn „ant“ nennt, ist „-Dlogfile.name = {Laufzeitpfad/Dateiname der Protokolldatei}“. Ersetzen Sie {Laufzeitpfad/Dateiname der Protokolldatei} durch Ihren Dateinamen. Wenn ant ausgeführt wird, wird dieser Wert als Systemeigenschaft festgelegt. Diese Systemeigenschaft wird dann zur Laufzeit in die Datei log4j.properties eingefügt.

http://ant.apache.org/manual/running.html

Verwandte Themen