executable jar und logging

Thaitanium

Mitglied
Hallo,

ich habe ein funktionierendes Projekt und nutze die logback api zum loggen in eine Datei. Das ganze funktioniert auch wunderbar in Eclipse. Aber sobald ich eine executable jar erstelle wird nichts in die
Log Datei geschrieben. Alles andere wird normal ausgeführt, einzig das logging wird ignoriert.
Ich habe die Forensuche bemüht und auch google hat mir nicht weiterhelfen können. Falls es doch so ein Problem hier im Forum gab kann gerne darauf verwiesen werden. Ich bin noch totaler Anfänger und bitte um Hilfe.

Gruß
 
Hast du die entsprechenden jar files im classpath? Wird die logback.xml Konfigurationsdatei gefunden?
 
Die Jars sollten im classpath sein... woran erkenne ich ob die logback.xml gefunden wird?
Ich bekomme keine fehlermeldung...
Denk dran ich bin noch Anfänger :bahnhof:🙂
 
Also funktioniert das Logging jetzt doch? Im ersten Post hieß es doch noch, dass das Logging nicht funktioniert.
 
In der Console wird geloggt, aber nicht in der Datei in der eigentlich auch geloggt werden soll.
Habe mich vllt nicht eindeutig ausgedrückt.
Also:
Eclispe: logging läuft
Executable Jar: logging nur in cmd und leider nicht in der Datei.
 
Zuletzt bearbeitet:
Das ist die logback.xml:

[XML]<configuration debug="true">

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>C:\Users\tohl\Desktop\testLOG.log</file>
<append>true</append>
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>[/XML]

Achso und gestartet habe ich per doppelklick auf die *.jar und über eine *.bat
 
Zuletzt bearbeitet:
In der Console wird geloggt, [...]
Ich seh in deiner Konfiguration nur das Logging per FileAppender. Hast du noch irgendwo ne zweite Konfigurationsdatei die nen ConsoleAppender verwendet? Oder wo kommen die Logmeldungen da her?
 
Eigentlich hab ich nur die... ich hatte aber schon so rumgespielt mit dem ganzen Kram... so learning by doing dachte ich mir... Hatte dann einfach von stdout(?) auf file geändert. Hat dann alles so geklappt.
Ich dachte einfach dass immer auf die Konsole geschrieben wird. Wie gesagt... Anfänger...
 
sicher das fallback default logging weil er die config nciht findet.

steht als erste zeile dazu vielleicht auch ein hinweis? config not found oder so
 
sicher das fallback default logging weil er die config nciht findet.

steht als erste zeile dazu vielleicht auch ein hinweis? config not found oder so

Kann mir gut Vorstellen dass er die Config File in der Jar nicht findet und dann standardmäßig auf die Konsole schreibt.

Einen Hinweis dazu finde ich leider nicht in der Konsole.
Ich kenne aber den Hinweis den Du wahrscheinlich meinst. Den hatte ich in Eclipse als ich noch keine Config File hatte.

Edit: Danke schonmal für die superschnellen Antworten!
 
Zuletzt bearbeitet:
Kopier dir das mal in die main-Methode. Für den logback-Status:

Java:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
   // print logback's internal status
StatusPrinter.print(lc);
 
Die logback.xml finde ich nicht in der Jar und die Manifest Datei sieht so aus:

Manifest-Version: 1.0
Class-Path: .
Main-Class: allTests.AllTests

Name: Build-Info
Selenium-Revision: 17482
Selenium-Build-Time: 2012-07-18 21:08:56
Selenium-Version: 2.25.0
 
Die logback.xml finde ich nicht in der Jar [...]
Das ist dann schonmal nicht gut 😉
Leg die Datei mal händisch ins jar file und schaue dann obs funktioniert. Du kannst bei Eclipse einstellen was er beim exportieren mit ins jar file übernehmen soll, die logback.xml gehört da mit rein.
 
Ja das hab ich mir gedacht dass das nicht gut ist. Wo genau soll die xml denn rein? da sind ja zig Ordner... Und in Eclipse hab ich nur drei Option fürs Library handling.
Da hab ich immer "Extract required libraries into generated JAR" genommen.

EDIT: Und wie mache ich das "händisch"?
 
Zuletzt bearbeitet:
Alternativ (und eigentlich sogar besser) solltest du die logback.xml neben dem generierten JAR File ablegen.

Sry, das hab ich irgendwie übersehen.

Also wenn ich die logback.xml "neben" der JAR File ablegen soll. Wie soll das ganze denn funktionieren?
Also wie kann ich der JAR sagen bzw. logback in der JAR sagen wo die logback.xml liegt?
 
Dadurch, dass du folgendes MANIFEST.MF hast:
Code:
Manifest-Version: 1.0
Class-Path: .
Main-Class: allTests.AllTests

Name: Build-Info
Selenium-Revision: 17482
Selenium-Build-Time: 2012-07-18 21:08:56
Selenium-Version: 2.25.0
Ist der Ordner in dem das JAR File liegt ( . ) im Class-Path und damit auch alle Dateien, die dort liegen.
 

Neue Themen


Zurück
Oben