Haymaker84 Geschrieben 12. April 2010 Geschrieben 12. April 2010 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? Zitieren
perdian Geschrieben 12. April 2010 Geschrieben 12. April 2010 Im Zweifelsfalle einfach einen komplett eigenen Appender schreiben und dort die entsprechenden Parameterwerte auslesen und den Pfad selbst zusammensetzen. Zitieren
Haymaker84 Geschrieben 15. April 2010 Autor Geschrieben 15. April 2010 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. Zitieren
LadyPreis Geschrieben 15. April 2010 Geschrieben 15. April 2010 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 Zitieren
Haymaker84 Geschrieben 19. April 2010 Autor Geschrieben 19. April 2010 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 Zitieren
perdian Geschrieben 27. April 2010 Geschrieben 27. April 2010 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.