# Logger teilweise ausschalten



## 3,14159265 (24. Apr 2010)

Hallo zusammen, 

wenn ich im Log Level fine logge bekomme ich unter anderem auch sämtliche Swing Logs mit in meine Output File geschrieben. 
Ist es irgendwie möglich, ohne auf log4j umzusteigen, das auszuschalten, dass nur noch die Logs aus meiner Anwendung geloggt werden und nicht mehr die Swing Logs? 

Dank und Gruß


----------



## musiKk (24. Apr 2010)

Ich weiß jetzt nicht, wie die Logger von Swing heißen (und mir war bis eben auch unbekannt, dass da überhaupt geloggt wird...), aber wenn sie mit [c]javax.swing[/c] beginnen, sollte die Konfiguration [c]javax.swing.level=SEVERE[/c] oder so dafür sorgen, dass nur noch die schlimmsten Meldungen erscheinen.


----------



## 3,14159265 (25. Apr 2010)

Mmh, also ich versteh es nicht so ganz: 

Hier mal ein einfaches Beispiel zu dem Logger - produziert das selbe Problem: 
[JAVA=42]
public class LoggerConfig {

    private LoggerConfig() {
    }

    public static void setup(String path, String name, Level level) {
	try {
	    Logger logger = Logger.getLogger("");
	    logger.setLevel(level);

	    FileHandler fh = new FileHandler(path+name);
	    fh.setFormatter(new SimpleFormatter());

	    logger.addHandler(fh);

	} catch (Exception e) {
	    e.printStackTrace();
	}
    }
}
[/code]

Hier die Klasse, wo geloggt werden soll: 
[JAVA=42]
public class Test {
    private final static Logger LOGGER = Logger.getLogger(Test.class.getName());
    public static void main(String[] args) {
	LoggerConfig.setup("C:\", "log.txt", Level.FINE);	
	LOGGER.log(Level.INFO,"Info log");

	new Fenster();

	LOGGER.log(Level.WARNING,"Warnung");
	LOGGER.log(Level.INFO,"Info");
    }
}
[/code]

Das [JAVA=42]new Fenster();[/code] ist ein einfaches JFrame. Wenn man es startet und dann nur kurz in die log.txt schaut, stehen die ganzen swingx logs mit drin. 
Hatte schon versucht einen Filter drüber zu legen, allerdings hat das nicht so ganz geklappt.. 
Der "Fehler" wird ja auch erst ab den Level FINE produziert - ab INFO werden die Sachen nicht angezeigt.. 
Weiß einer wie ich das abschalten/umgehen kann?


----------



## 3,14159265 (25. Apr 2010)

Gelöst: Hatte einen Fehler im Filter.. 
Wenn man einen Filter an den Handler bastelt klappt es. 

[JAVA=42]
fh.setFilter(new Filter() {
		    public boolean isLoggable(LogRecord record) {
			return record.getLoggerName().startsWith("PACKAGENAME"); 
		    }
		});
[/code]

In PACKAGENAME trägt man den Paketnamen ein, der geloggt werden soll..


----------



## nrg (25. Apr 2010)

nenene,... ich hab zwar schon einige getrunken aber das bestätigt mir nur nochmal die nutzung von log4j....

edit: um das eben nochmal ein wenig detailierter auszudrücken. ich hab es auch mal mit std java probiert und hab das ziehmlich schnell gegen die wand gefahren. also für mich: loggen in java -> apache log4j


----------



## musiKk (25. Apr 2010)

Naja, man hat erstens nicht immer die Wahl, gerade wenn verwendete Bibliotheken JUL verwenden und zweitens ist das doch wirklich sehr einfach über Konfiguration zu lösen:

```
test.level=FINEST
test.foo.level=WARNING
```
sorgt dafür, dass alles im Package [c]test[/c] geloggt wird mit Ausnahme von allem im Package [c]test.foo[/c], dort gehts erst ab _WARNING_ los.


----------



## 3,14159265 (26. Apr 2010)

Zugegeben, ich kenne jetzt log4j nicht im Detail, aber ich fand den Code jetzt auch nicht gerade schwer zu erstellen. Man muss sich nur dafür etwas durch die API hangeln um zu erfahren, dass ab man sich ab FINE runter, im TRACE Level Bereich befindet und da wird dann alles Mögliche geloggt wird - was ich auch etwas komisch fand, da: Schaut man in die Klasse von JFrame rein, kein LOGGER vorhanden ist und die Ausgaben nur kommen, wenn man in eine Datei loggt - in der Konsole wird das nicht angezeigt..


----------



## nrg (26. Apr 2010)

allein als ich 2 appender drangehängt habe (console und file) und plötzlich unerklärlich in der console doppelt geloggt wurde (oder glaub sogar 4fach, weiß nimmer genau), hat mich zur entscheidung gebraucht den logger vom java std an den nagel zu hängen . aber gut. wenn er bei dir das macht, was du willst, spricht ja nix dagegen


----------

