Können Sie erklären, warum Sie mehrere Logger detaillierter möchten? Ich denke nicht, dass es mehrere log4j-Instanzen geben kann.
Wenn Sie nur mehr Appen will, schauen Sie hier:
Hier ist die log4j.properties aus dem obigen Link:
# logj4.properties
log4j.rootCategory = WARN, A
log4j.category.com.lewscanon = WARN, F
log4j.category.com.lewscanon.mouser = DEBUG, X
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.F = org.apache.log4j.RollingFileAppender
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.File = /projects/mouser/logs/lewscanon.log
log4j.appender.F.MaxFileSize = 512KB
log4j.appender.F.MaxBackupIndex = 2
log4j.appender.X = org.apache.log4j.RollingFileAppender
log4j.appender.X.layout = org.apache.log4j.PatternLayout
log4j.appender.X.File = /projects/mouser/logs/mouser.log
log4j.appender.X.MaxFileSize = 512KB
log4j.appender.X.MaxBackupIndex = 2
log4j.appender.A.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n
log4j.appender.F.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n
log4j.appender.X.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n
Diese Linien:
log4j.rootCategory = WARN, A
log4j.category.com.lewscanon = WARN, F
log4j.category.com.lewscanon.mouser = DEBUG, X
sagen Sie folgendes:
- Log alles an appender A (das ist Konsole). Loggen Sie nur Warnungen und über
- Loggen Sie alles von com.lewscanon Paket zu Appender F (die Datei lewscanon.log geht). Loggen Sie nur Warnungen und über
- Log alles von com.lewscannon.mouser Paket zu appender X (die Datei mouser.log geht). Nur Debug-Protokoll und über
Es ist auch möglich, die volle Klassennamen zu liefern:
log4j.category.com.lewscanon.SomeClass = WARN, F
Mittel log alles von com.lewscanon.SomeClass
Klasse F bis appender, Ebene warnen und darüber.
nehme ich die oben granulare genug ist, aber wenn Sie unbedingt brauchen sie mehr granulare (ich glaube nicht, dass praktisch genug ist, obwohl), pro:
Logger.getLogger(String name)
akzeptiert Namen. So können Sie so etwas wie:
log4j.category.myFancyLogger = INFO, F
und verwenden Logger.getLogger("myFancyLogger")
die Logger zu erhalten, die F mit Leveln Info zu Appen protokolliert.
Ich schaute auf Ihren Link. Aber wie kann ich den Speicherort des Protokolls ändern? Ich meine, ich möchte eine log4j-Instanz verwenden, dann in einer Methode in eine Datei loggen, während ich in einer anderen Methode in einer anderen Datei logge. Irgendein Beispiel? – Kavin
Siehe die Bearbeitung, hoffe, es ist granular genug. –
Es funktioniert. Vielen Dank – Kavin