ta działa automatycznie w Log4j jeśli zgodnie z konwencją nazewnictwa dla drwali. W kodzie, zadeklarować rejestratory z nazwą klasy:
Logger logger = LogManager.getLogger(MyClass.class);
Rejestrator automatycznie przypisywana jest nazwa fully.qualified.class.name.of.MyClass
. Teraz, w konfiguracji można użyć tego pełną nazwę (lub nazwę pakietu lub pierwszą część pakietu), aby wykonać filtrowanie i routingu:
Filtering
Poniższy przykład pokazuje jak filtrować dziennik zdarzenia oparte na pakiecie klasy wykonującej rejestrowanie: wszystkie zdarzenia dziennika poziomu DEBUG i TRACE według klas w pakiecie com.other.company
zostaną zignorowane, a dla klas w pakiecie com.another.project
uwzględnione zostaną tylko rejestrowanie ERROR i 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
Poniższy przykład pokazuje, w jaki sposób wydarzenia aby rozdzielić plików opartych na opakowaniu klasy robi rejestrowanie Log trasa: Wszystkie rejestrowanie według klas w pakiecie com.other.company
nie zostaną zapisane my.log
tylko przez 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>