questo funziona automaticamente in Log4j se si segue la convenzione di denominazione per logger. Nel codice, dichiarare logger con il loro nome classe:
Logger logger = LogManager.getLogger(MyClass.class);
Il registratore viene assegnato automaticamente il nome fully.qualified.class.name.of.MyClass
. Ora, nella configurazione è possibile utilizzare questo nome completo (o il nome del pacchetto o la prima parte del pacchetto) per fare il filtraggio e il routing:
Filtering
L'esempio seguente mostra come filtrare registro eventi basati sul pacchetto della classe che esegue la registrazione: tutti gli eventi di registro di livello DEBUG e TRACE per classi nel pacchetto com.other.company
verranno ignorati e per le classi nel pacchetto com.another.project
verrà inclusa solo la registrazione ERROR e FATAL.
<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/my.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>
<!-- drops all DEBUG and TRACE logging done by any class in this package -->
<Logger name="com.other.company" level="INFO" />
<!-- log only ERROR and FATAL logging by classes in this package -->
<Logger name="com.another.project" level="ERROR" />
<!-- by default, all log events are written to MyFile -->
<Root level="trace">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
Routing
L'esempio seguente mostra come gli eventi per separare i file in base il pacchetto della classe a fare la registrazione di log di registro percorso: tutta la registrazione per classi nel pacchetto com.other.company
non saranno scritti my.log
solo per other.log
.
<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/my.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
<File name="OtherFile" fileName="logs/other.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>
<!-- all logging from this package and subpackages goes to OtherFile -->
<!-- Note: set additivity=false or logging will also go to the root logger -->
<Logger name="com.other.company" additivity="false">
<AppenderRef ref="OtherFile"/>
</Logger>
<Root level="trace">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
fonte
2017-01-21 12:46:25