Zum Inhalt springen

Log4J konfigurieren (Ausgabedatei)


Haymaker84

Empfohlene Beiträge

hi,

log4j will nicht so ganz gehorchen ... :D

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...