# Log4J mit 2 Appender, einer soll nur INFO loggen



## sause (11. Jul 2006)

Hallo

Ich habe mir das Logging-Framework Log4J einmal ein bisschen genauer angesehen und möchte damit anfangen zu arbeiten. Das was ich brauche kann ich eigentlich, nur eine Sache bring ich nicht hin.....

Die Ausgangslage sieht etwa so aus:

Ich habe eine log.propetries in der ich die Konfiguration des Logs einstelle. Es soll 2 Appender (einer auf der Kommandozeile, einer in ein File) haben.

Soweit so gut. Das läuft auch ganz gut, doch jetzt möchte ich, dass auf stdout nur der INFO Level geloggt wird, jedoch im File alles hineingeschrieben wird was sich so tut in meiner kleinen App.....  und das funktioniert hier einfach noch nicht so richtig.

Hier einmal meine .propetries Datei:

```
log4j.rootLogger=DEBUG, myStdout, myRollingFile

log4j.appender.myStdout=org.apache.log4j.ConsoleAppender
log4j.appender.myStdout.layout=org.apache.log4j.PatternLayout
log4j.appender.myStdout.layout.ConversionPattern=%m%n

log4j.appender.myRollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.myRollingFile.File=tstLog4J.log
log4j.appender.myRollingFile.MaxFileSize=100KB
log4j.appender.myRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myRollingFile.layout.ConversionPattern=%d{ISO8601} %-5p %c: %m%n
```

Kann mir hier jemand einen kleinen Schupps geben damit ich das was ich will machen kann??

vielen Dank und Gruss
stephan


----------



## byte (11. Jul 2006)

Spontant fällt mir da ein, einfach einen zweiten Logger zu instanzieren als Parent vom Stdout und bei diesem den Level auf Info zu stellen. Aber der loggt dann ja auch alles unterhalb von Level Info mit, also noch nicht so wirklich das, was Du willst.


----------



## eric (9. Aug 2007)

Das Thread ist zwar schon ein bissl` älter, aber vieleicht hat ja jemand eine Lösung dazu.

Ich stelle mir gerade die gleiche Frage. Die Idee ist, dass man nicht nur einen root-Logger hat, sondern zwei unterschiedliche, die unterschiedlicher Appender in unterschiedlichen Log-Levels bedienen.

Oder man kann den Appendern unterschiedliche Level zuordnen. Das würde nach meinem Verständnis allerdings das Konzept von Log4J verletzen. Der Appender soll ja nur anhängen.

Hat jemand sowas schon gemacht, geht das überhaupt?

Grüsse aus B.


----------



## eric (14. Aug 2007)

Dafür gibt es ein Appender-Property Threshold, das je Appender gesetzt werden kann. Also den root-Logger auf ALL setzen, Threshold für die Konsole auf ERROR und für File auf DEBUG o.s.ä.

Meine Konfigdatei, mit der ich rumspiele, sieht so aus:

```
log4j.rootLogger=ALL, console, syslog

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %p %c[%t] - %m%n

 
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.SyslogHost=192.168.242.129
log4j.appender.syslog.Facility=USER
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern=%d [%t] %p %c - %m %n
log4j.appender.syslog.Threshold=INFO
```

Falls das hier noch jemanden interessiert


----------

