[log4j] Wie nutzt man log4j.properties?

thomas2004ch

Mitglied
Hallo,

wir haben eine Java-Anwendung, die zwar Logs schreibt aber kein Time-Stamp zeigt. Das das Programm von Extern geschrieben war und den nicht mehr zu finden, versuchen wir selber das Time-Stamp zu ergänzen.

Nun meine Frage:

kann man das Java-Programm mit einer Optionsparameter starten, das aber eine 'log4j.properties' nutzt und so dass das Tiem-Stamp auch in den Logs zu sehen?

Gruß
 
Du musst die log4j.properties vorher einlesen und so das Logging konfigurieren.
Ich mache das immer so:

Java:
public class Cocq_Archiv_Grabber
{
    public static final Logger logger = Logger.getRootLogger();

    public static Properties properties = new Properties();

    private static final String LOG4J = "log4j.properties";

    public static void main( String[] args )
    {
        initLogger();

        //Init abgeschlossen, los gehts!
        logger.info("Die erste Logging-Info!");
    }

    private static void initLogger()
    {
        if ( new File( LOG4J ).isFile() == false )
        {
            System.out.println( LOG4J + " nicht gefunden" );
            System.exit( 1 );
        }

        PropertyConfigurator.configure( LOG4J );
    }
}

Die Properties-Datei muss dabei im Wurzelverzeichnis der Anwendung sein.
 
Zuletzt bearbeitet:
Ich würde es mal mit dem Parameter beim Aufruf versuchen

Code:
java  -Dlog4j.configuration=file:<Pfad zu log4j.properties>
 
Ich bin mir ziemlich sicher, das es funktionieren muss.

Leider schreibst du nicht, was es bedeutet "funktioniert nicht"🙁

Aber bei hartnäckigen Problemen schreibe ich in meine log4j.properties immer
Code:
log4j.debug=true
oder wieder als Parameter beim Aufruf
Code:
java -Dlog4j.debug=true
Dies führt zu detaillierten Ausgaben was log4j beim Parsen so tut.
Bei mir sind das beispielsweise folgende Ausgaben
Code:
log4j: Parsing for [root] with value=[ERROR, STDOUT].
log4j: Level token is [ERROR].
log4j: Category root set to ERROR
log4j: Parsing appender named "STDOUT".
log4j: Parsing layout options for "STDOUT".
log4j: Setting property [conversionPattern] to [%d [%p] (%c) %m%n].
log4j: End of parsing for "STDOUT".
log4j: Parsed "STDOUT" options.
log4j: Parsing for [net.sf.ehcache.hibernate] with value=[ERROR].
log4j: Level token is [ERROR].
log4j: Category net.sf.ehcache.hibernate set to ERROR
...
 
Ich hab es getestet: Es funktioniert bestens!

Vielen Dank für den Tipp, wieder was gelernt! 🙂

Hoffentlich nützt es auch dem Threadstarter etwas.
 

Zurück
Oben