Veröffentlicht 12. April 201015 j hi, log4j will nicht so ganz gehorchen ... Man hat ja die möglichkeit, log4j entweder hardcoded oder über eine (XML) - Datei zu konfigurieren. Ich versuche einen Mischbetrieb hinzubekommen. den hauptteil der Konfiguration wollte ich über die XML regeln: <appender name="MitteilungLogFileAppender" class="XXX.LetzteMitteilungAppender"> <!-- <param name="file" value="D://test/tempLetzteMitteilung.log"/> --> <param name="append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="conversionPattern" value="%d | %-5p | %c{1} | - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="FATAL" /> </filter> </appender> Allerdings möchte ich den Pfad + Namen der Logdatei dynamisch setzen. (Über unsere zahlreichen Programm-Parameter) Nun ist es aber so, dass <!-- <param name="file" value="D://test/tempLetzteMitteilung.log"/> --> da sein muss... also der Parameter "file" muss angegeben sein?! Ich kann mir nicht vorstellen, dass das Framework so SO Steif ist. Ich habs schon hinbekommen, dass er ne dynamische Datei anlegt, über /** @see org.apache.log4j.FileAppender#activateOptions() */ public void activateOptions() { super.activateOptions(); if (null == raFile) { if (null != fileName) { try { String test = System.getProperty(MituebConstants.SYSPROP_AUSGABE_PFAD); raFile = new RandomAccessFile(test + "Dyna.log", "rw"); } catch (Exception ex) { // } } if (null == raFile) { LogLog.error("Logdatei für letzte Mitteilungsverarbeitung'" + fileName + "' kann nicht angelegt werden fuer '" + name + "'."); } } } Nun ist es aber so, dass er natürlich trotzdem noch die datei aus der XML anlegt. Das ist zum einen ein ziemlich hässlicher workaround, zum anderen werden unsere admins mir was husten, einfach wild in irgendwelche Verzeichnisse zu schreiben. (Falls das überhaupt technisch klappt - was ich arg bezweifel!) Gibts dafür ne möglichkeit oder muss ich die ganze xml wegwerfen?
12. April 201015 j Im Zweifelsfalle einfach einen komplett eigenen Appender schreiben und dort die entsprechenden Parameterwerte auslesen und den Pfad selbst zusammensetzen.
15. April 201015 j Ich hab jetzt die komplette xml weggeworfen und benutzer 3 appender, die ich im programm selbst konfiguriere. Einen für die Konsole, einen Fileappender für die komplette Tagesverarbeitung und einen Fileappender für die aktuelle Mitteilungsverarbeitung, den ich selbst geschrieben habe. Funktioniert tadellos.
15. April 201015 j hat dann aber den Nachteil, dass bei sich ändernden Appendern der Source neu compiliert werden muss. Wenn du noch ne Möglichkeit für ne dynamische Config findest, würde mich interessieren
19. April 201015 j Geht so, die parameter die sich bei realistischer betrachtung ändern könnten, werden beim Programmstart übergeben. (Dateiname, Verzeichnis, Loglevel... usw) Das Pattern fürs Layout oder das Encoding ist da zwar fest drin... Aber wann passt man sowas schonmal an? Eine Lösung, die nicht hard-coded ist, wär mir auch bedeutend lieber - aber bei meiner recherche sah es so aus, als gäbe es nur die drei möglichkeiten (die untereinander nicht kompatibel sind); - XML - Property-File - hard-coded choose your poison
27. April 201015 j Eine Lösung, die nicht hard-coded ist, wär mir auch bedeutend lieber - aber bei meiner recherche sah es so aus, als gäbe es nur die drei möglichkeiten (die untereinander nicht kompatibel sind) [...]Ich wiederhole mich: Es steht dir frei einen eigenen Appender zu schreiben, der sich aus einer beliebigen Quelle (oder einer Kombination von Quellen) konfigurieren lässt.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.