log4j Logging über mehrere Klassen

SegFault

Bekanntes Mitglied
Kann ich mit einen logger verschiedene Klassen abfragen? Ich habe gerade für einige meiner Klassen einen logger angelegt.
[Java]
Logger logger = Logger.getLogger(Myclass.class);
[/Java]
Wenn jetzt die Klasse selbst in einen unter package ist also de.foo.bar.myclass
loggt ein logger für ("de.foo.bar") Automatisch alle Klassen aus den Package?
also könnte ich Logger.getLogger("de.foo.bar").setLevel(...) machen um alle Logger innerhalb des Packages zu erreichen?
Ich versuche das gerade um einen eigenen Appender ein zu richten aber irgendwie klappt das nicht:

Java:
try 
{
        FileAppender fa = new FileAppender(layout,"logs/"+logname+cal.get(Calendar.DAY_OF_MONTH)+"-"+cal.get(Calendar.MONTH)+"-"+cal.get(Calendar.YEAR)+"("+cal.get(Calendar.HOUR_OF_DAY)+"h"+cal.get(Calendar.MINUTE)+"m).log",true);
        Logger logger = Logger.getLogger("de.foo.bar.MyClass");
        logger.addAppender(fa);
}
catch (IOException e) 
{
     LogLog.error("Fehler beim anlegen des logs",e);
}
 

fastjack

Top Contributor
Warum nimmst Du nicht die XML-Konfiguration von log4j. Da kannst Du mit

[XML]<category name="a.b.c.Foo">
<priority value="INFO"/>
</category>[/XML]

genau diesen Effekt erzielen.
 
B

bygones

Gast
nein - [c]Logger logger = Logger.getLogger("de.foo.bar")[/c] wuerde nicht fuer alle Klassen automatisch im package de.foo.bar loggen. Der String ist nur ein identifizierer, mehr nicht.

fuer "komplexeres" logging siehe antwort drueber
 

SegFault

Bekanntes Mitglied
ich suche gerade nach entsprechenden Tutorials darüber, finde aber nichts passendes. Problem ist immer noch. Ich möchte für verschiedene Logevents einmal in einer datei, einmal in ein entsprechendes Fenster loggen.
es gibt klassen
a.b.c.Klasse1
a.b.c.Klasse2
a.b.c.Irgendwas
a.b.c.Irgendwas_anderes
ich möchte nun für Klasse1 und Klasse 2 separat in 2 verschiedene Files loggen. Sowas wie Klasse1-Log.log und Klasse2-Log.log und alle anderen aus den package a.b.c sollen in default-Log.log geschrieben werden. Wenn das nicht geht wäre das auch nicht so schlimm aber allgemein möchte ich irgendwie die Logging ausgaben von a.b.c abfangen. Ich weiss aber nicht wie.
Das Problem ist auch das meine Appender in Klassen anhängen die eh erst zur laufzeit erstellt werden. Ich hab ein LogWindowAppender erstellt der eine funtkion addLogWind(MyLogWindow) hat mit dem mache ich bekannt in welches Fenster dieser Appender schreiben soll. D.H. ich kanns wohl nicht direkt per XML so konfigurieren. Zumindest finde ich nichts wie ich das verhalten umsetzen kann.
 

Der Müde Joe

Top Contributor
>ich kanns wohl nicht direkt per XML so konfigurieren.

ach was.

Code:
    <appender name="LOG1" class="org.apache.log4j.RollingFileAppender">
        <param name="threshold" value="DEBUG" />
        <param name="file" value="../log/log1.log" />
        <param name="maxFileSize" value="3MB" />
        <param name="maxBackupIndex" value="9" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
        </layout>
    </appender>
    <appender name="LOG2" class="org.apache.log4j.RollingFileAppender">
        <param name="threshold" value="DEBUG" />
        <param name="file" value="../log/log2.log" />
        <param name="maxFileSize" value="3MB" />
        <param name="maxBackupIndex" value="9" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
        </layout>
    </appender>

    <logger name="fi.fa.Foo" >
        <level value="DEBUG" />
        <appender-ref ref="LOG1" />
    </logger>
    <logger name="bli.bla.Blub" >
        <level value="DEBUG" />
        <appender-ref ref="LOG2" />
    </logger>
 

SegFault

Bekanntes Mitglied
Bei den File Appendern möchte ich den filename vom Programm vergeben lassen. Mein eigener Appender braucht halt eine Referenz zu einen Fenster in dem er die Logausgaben machen soll. Und diese Daten kann ich wohl schlecht per xml einstellen. Es sei denn ich mach mir eine LogWindowFactory... Wie ist das wenn ich ein param habe wird das in meiner Appender Klasse direkt auf eine Variable gemapped? oder muss ich dafür was tun?
 

SegFault

Bekanntes Mitglied
Ich hab immer noch Probleme damit, folgende Meldung kommt:
Code:
log4j:WARN No appenders could be found for logger (de.weiss.werkstatt.server.util.ServiceUtil).
log4j:WARN Please initialize the log4j system properly.
Hier die xml Datei:
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
		</layout>
	</appender>
	<root>
		<priority value="debug"></priority>
		<appender-ref ref="stdout"/>
	</root>
	<appender name="DefaultDateFile" class="de.weiss.werkstatt.server.util.DateRollingFileAppender">
		<param name="threshold" value="DEBUG" />
		<param name="fname" value="DefaultLog" />
		<param name="maxFileSize" value="5MB" />
		<param name="maxBackupIndex" value="9" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="DefaultLogwindow" class="de.weiss.werkstatt.server.util.LogPanelAppender">
		<param name="wname" value="Default-Log" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="NutzerverwaltungDateFile" class="de.weiss.werkstatt.server.util.DateRollingFileAppender">
		<param name="threshold" value="DEBUG" />
		<param name="fname" value="NutzerverwaltungLog" />
		<param name="maxFileSize" value="5MB" />
		<param name="maxBackupIndex" value="9" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="NutzerverwaltungLogwindow" class="de.weiss.werkstatt.server.util.LogPanelAppender">
		<param name="wname" value="Nutzerverwaltung-Log" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="HibernateDateFile" class="de.weiss.werkstatt.server.util.DateRollingFileAppender">
		<param name="threshold" value="DEBUG" />
		<param name="fname" value="HibernateLog" />
		<param name="maxFileSize" value="5MB" />
		<param name="maxBackupIndex" value="9" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="HibernateLogwindow" class="de.weiss.werkstatt.server.util.LogPanelAppender">
		<param name="wname" value="Hibernate-Log" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="KundenverwaltungDateFile" class="de.weiss.werkstatt.server.util.DateRollingFileAppender">
		<param name="threshold" value="DEBUG" />
		<param name="fname" value="KundenverwaltungLog" />
		<param name="maxFileSize" value="5MB" />
		<param name="maxBackupIndex" value="9" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<appender name="KundenverwaltungLogwindow" class="de.weiss.werkstatt.server.util.LogPanelAppender">
		<param name="wname" value="Kundenverwaltung-Log" />
		<layout class="org.apache.log4j.PatternLayout">
		    <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %l - %m%n" />
		</layout>
	</appender>
	<logger name="de.hibernate">
		<level value="DEBUG" />
	    <appender-ref ref="HibernateDateFile" />
	    <appender-ref ref="HibernateLogwindow" />
	</logger>
	<logger name="de.weiss.werkstatt" >
	    <level value="DEBUG" />
	    <appender-ref ref="DefaultDateFile" />
	    <appender-ref ref="DefaultLogwindow" />
	</logger>
	<logger name="de.weiss.werkstatt.server.NutzerverwaltungImpl" additivity="false">
	    <level value="DEBUG" />
	    <appender-ref ref="NutzerverwaltungDateFile" />
	    <appender-ref ref="NutzerverwaltungLogwindow" />
	</logger>
	<logger name="de.weiss.werkstatt.server.KundenverwaltungImpl" additivity="false">
	    <level value="DEBUG" />
	    <appender-ref ref="KundenverwaltungDateFile" />
	    <appender-ref ref="NutzerverwaltungLogwindow" />
	</logger>
</log4j:configuration>
Und zum laden der file verwende ich:
DOMConfigurator.configureAndWatch( "META-INF/Logging.xml")

es kommt die standardlogausgabe auf out. Aber keiner meiner angemeldeten Logger wird verwendet obwohl gewisse klassen auf garnatie ein Logger.get(myclass.class); verwenden. Oder wende ich das noch immer falsch an?
 

SegFault

Bekanntes Mitglied
1.) langsam gehts voran. Der Pfad "META-INF/Logging.xml" wurde nicht erkannt. aus irgend einen grund findet er das nicht. Ich musste die Logging.xml direkt ins Projektverzeichnis kopieren (nicht im src ordner). Das löst zwar das problem aber nicht sehr gut. Wie kann ich das umgehen.

2.) Kann ich das loglevel dynamisch einstellen? Jetzt steht ja im xml file welches level gelogged wird. Ich würde gerne in meiner GUI diesen level einstellbar machen. Für diese reinen klassen bei denen ich mit Logger.getLogger(myClass.class) arbeite geht das problemlos, aber nicht bei vererbten Loggern. Gibts da irgend einen workaround?
 
M

maki

Gast
1. Bei log4j muss die Datei log4j.properties oder log4j.xml heissen und im Classpath sein.

2. Ja, sollte auch in der Doku beschrieben sein ;)
 

SegFault

Bekanntes Mitglied
Prinzipiell hab ich nun rausgefunden das man das ganze auch per Properties direkt konfigurieren kann und da das mit configreAndWatch auf änderungen überwacht wird kann ich das wohl nachträglich ändern. Das ist aber das einzige was ich in der Doku darüber gefunden haben. Oder gibts noch andere Ansätze?
 

SegFault

Bekanntes Mitglied
oki problem 1 ist gelöst. Hab aber immer noch problem 2. Ich kriege keine Hibernate logs ran obwohl ich dafür einen logger definiert hab.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Logging mit org.apache.logging.log4j Allgemeine Java-Themen 1
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
S log4j - doppeltes Logging Allgemeine Java-Themen 4
DEvent log4j, commons logging, log4j.properties and co Allgemeine Java-Themen 12
J Log4j / commons-logging Allgemeine Java-Themen 3
K Logging mit Log4j Allgemeine Java-Themen 2
S Logging mit log4j Allgemeine Java-Themen 17
M Rat gesucht: Logging (log4J oder java.util.logging oder .) Allgemeine Java-Themen 5
M log4j Problem mit jlink Allgemeine Java-Themen 19
T Log4j integrieren, wie? Allgemeine Java-Themen 7
M Schutz vor Log4J Allgemeine Java-Themen 2
W Sicherheitslücke in Log4j Allgemeine Java-Themen 66
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
MiMa mit Log4j einzeln Protokollieren Allgemeine Java-Themen 7
A JWS application - log4j wie configurieren Allgemeine Java-Themen 1
A Log4j configurieren Allgemeine Java-Themen 1
L Applet Wo loggt log4j bei Applets Allgemeine Java-Themen 0
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
D Log4J RollingFileAppender rolliert nicht Allgemeine Java-Themen 3
MiMa Log4j in Dateien mit eigenem Namen schreiben Allgemeine Java-Themen 3
O log4j - Verständnisfrage Allgemeine Java-Themen 1
O [log4J] Unterschied SocketServer <-> SimpleSocketServer Allgemeine Java-Themen 0
O log4j pfad per umgebungsvariable setzen Allgemeine Java-Themen 5
T [log4j] Wie nutzt man log4j.properties? Allgemeine Java-Themen 7
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
O log4j - eigenes Log für einzelne Klasse Allgemeine Java-Themen 5
J log4j ohne propertiedatei Allgemeine Java-Themen 4
H [Logback || log4j] Wie richtig loggen / Log Instanzen verwalten Allgemeine Java-Themen 2
A Threads Log4J Logger wird "überschrieben" Allgemeine Java-Themen 3
N Log4J PatternLayout Allgemeine Java-Themen 2
S Frage zu Format Modifiers in Log4j Allgemeine Java-Themen 11
S log4j, root logger logt nur FATAL? Allgemeine Java-Themen 9
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
C Grundsätzliches zu log4j Allgemeine Java-Themen 8
C Log4J mit 2 Appender Allgemeine Java-Themen 4
reibi log4j - Bestes Konzept Allgemeine Java-Themen 10
F System.out.println mit log4j ersetzen Allgemeine Java-Themen 10
F Log4J - Detaillierte Logeinträge Allgemeine Java-Themen 2
F log4j DailyRollingFileAppender Allgemeine Java-Themen 2
T Wahrscheinlich Problem mit log4j.properties Allgemeine Java-Themen 19
B Log4J und Categories Allgemeine Java-Themen 4
P Log4J - logt nicht Allgemeine Java-Themen 5
L log4j layout Allgemeine Java-Themen 3
S Log4j und SLF4J - Laufzeitänderungen Allgemeine Java-Themen 11
E Eclipse Axis, Jena, HTTPClient - log4j Meldungen deaktivieren? Allgemeine Java-Themen 6
ruutaiokwu log4j appender in log4j.xml in java referenzieren... Allgemeine Java-Themen 6
G log4j File erzeugen und Pfad bestimmen Allgemeine Java-Themen 3
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
H log4j & taskname Allgemeine Java-Themen 3
C log4j.properties wird nicht verwendet?? Allgemeine Java-Themen 3
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
G Log4J Verzeichnis der Log-Datei konfigurieren Allgemeine Java-Themen 8
K log4j-Warnung mit Quartz Allgemeine Java-Themen 3
G log4j package filter Allgemeine Java-Themen 10
G log4j - Behandlung nicht explizit abgefangener Exceptions Allgemeine Java-Themen 5
R log4j - Ausgabe der Logs Allgemeine Java-Themen 3
MQue log4j mit hibernate Allgemeine Java-Themen 3
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
S log4j.dtd nicht in jar gefunden Allgemeine Java-Themen 7
H log4j - täglichen DailyRollingFileAppender Allgemeine Java-Themen 2
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
hdi log4j in eine Datei Allgemeine Java-Themen 21
S Log4J DailyRollingFileAppender Allgemeine Java-Themen 4
M Log4J funktioniert nicht unter anderem Benutzer Allgemeine Java-Themen 5
B Log4j --- Welchen Appender, wie konfigurieren Allgemeine Java-Themen 3
F Logger in mehrere Dateien mit log4J Allgemeine Java-Themen 4
T Log4J: Bei Programmstart immer eine neue LogDatei erzeugen Allgemeine Java-Themen 9
ARadauer log4j DailyRollingFileAppender Allgemeine Java-Themen 4
B log4j löscht meine Logdateien Allgemeine Java-Themen 2
V Feinheitsfragen zu log4j Allgemeine Java-Themen 21
R log4j Allgemeine Java-Themen 5
K log4j Anzeigeformat Allgemeine Java-Themen 2
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
J Alte Log Files löschen mit log4j Allgemeine Java-Themen 3
U Log4j - gleichzeitige geöffnete File handles Allgemeine Java-Themen 2
P log4j Allgemeine Java-Themen 21
P log4j Allgemeine Java-Themen 9
B log4j FileAppender Dateizugriff Allgemeine Java-Themen 7
G log4j Allgemeine Java-Themen 13
V log4j Problem . Allgemeine Java-Themen 8
D Log4j-HTMLLayout Allgemeine Java-Themen 2
G Log4j - Log-File Allgemeine Java-Themen 6
Q [log4j] nur ein Mal konfigurieren Allgemeine Java-Themen 2
Y log4J XML Konfiguration Allgemeine Java-Themen 8
P log4j: Übersicht der Properties Allgemeine Java-Themen 5
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K log4j - eigene Info-Ausgaben Allgemeine Java-Themen 5
K log4j - Fehlermeldung Allgemeine Java-Themen 2
J stackTrace mit log4j loggen Allgemeine Java-Themen 9
F log4j XML-Syntax Allgemeine Java-Themen 4
F log4j loggen in mehrere Dateien Allgemeine Java-Themen 4
S Log4J mit 2 Appender, einer soll nur INFO loggen Allgemeine Java-Themen 3
Q Ant und org.apache.log4j.xml.DOMConfigurator Problem Allgemeine Java-Themen 2
S log4j Allgemeine Java-Themen 2
V log4j.properties wird in der jar Datei nicht gefunden? Allgemeine Java-Themen 2
F [Log4J] Logdatei mit einem schlag über 200MB! Allgemeine Java-Themen 4
M Log4J - Protokollierung auf die GUI zaubern! Allgemeine Java-Themen 11
S log4j Protokoll in XML Allgemeine Java-Themen 11
B Wohin mit log4j.properties Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben