# Log4J und Categories



## budi (21. Mrz 2011)

Hallo, 

ich hab ein kleines Problem mit log4J:
Ich meinem *log4j.properties* File habe ich mir zwei Appender definiert. Einer schreibt auf die Console der 2te in eine Datei. Soweit so gut. 

Nun würde ich gerne jedem Appender einen eigenen Log-Level zuweisen,
sprich der Console Appender loggt alles (debug-level) und der File-Appender loggt erst ab "warn".

Ich hab verschiedene Sachen ausprobiert, alle Möglichkeiten sind jedoch gescheitert. 
Hier mein File:

```
log4j.rootCategory=stdout, file

# Console Appender wird hier deklariert
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %-5p (%F:%L) - %m%n

# File Appender wird hier deklariert
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${user.home}/test/logging.txt
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %-5p %M (%F:%L) - %m%n
```

Geht das überhaupt über dieses Property-File? 
Habs mit sowas versucht:

```
log4j.category.myfirstCat=debug, stdout
log4j.category.mysecondCat=warn, file
```

Aber alles ohne Erfolg. Weiß jemand von euch weiter?


----------



## maki (21. Mrz 2011)

Doku lesen?

Category ist x Jahren deprecated 

Beispiele sollten sich in der Doku oder über Google finden lassen, heute bevorzugt man XML dateien, wobei es bei einfacheren Setups auch per Properties  kein Problem ist.


----------



## jwiesmann (21. Mrz 2011)

Bei XML wäre es so 
[XML]     <param name="Threshold" value="DEBUG"/>
[/XML]
Vielleicht klappt es ja mit log4j.appender.file.Treshold
genauso


----------



## budi (21. Mrz 2011)

So, hat endlich geklappt. 

Mit *Threshold * funktioniert es. Damit habe ich es bereits heute morgen schon probiert, nur kam dann gar kein Log mehr an. 
Das Problem war nämlich --> log4j.rootCategory=stdout, file [hier fehlt *debug*]

sprich, so funktioniert es nun: 

```
log4j.rootCategory=debug, stdout, file
.....
log4j.appender.file.Threshold=INFO
```

*THX *!!


----------



## FArt (21. Mrz 2011)

Die wichtigsten Tipps werden gerne überlesen, wenn die vermeintliche Lösung gefunden wurde. Also noch mal: mach es mit XML.

Threshold ist nur ein "Schwellwert". Expliziter kann man das Logging mit einem LevelRangeFilter bestimmen.


----------

