Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Log4J konfigurieren (Ausgabedatei)

Empfohlene Antworten

Veröffentlicht

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?

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.

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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.