Я всегда использую XML. Мне легче читать и работать, а также есть несколько функций log4j, которые могут быть реализованы только с XML. Как сказал JoseK, если у вас есть более конкретные вопросы о том, что вы пробовали, сообщите нам.
Для некоторых основ файл свойств будет прочитан автоматически, если он находится в файле с именем log4j.xml
, расположенном в любом месте пути к классам. Самый простой способ сделать это - поместить в корневой каталог src. В нашем проекте я создаю папку logging
в каталоге resources
и добавляю ее в classpath, что позволяет мне также поместить туда файл commons-logging.properties
.
В Интернете нет недостатка в описании структуры XML-файлов log4j.
Один случайный пример Google здесь . Вы можете найти гораздо больше в Интернете.
Надеюсь, чтобы помочь вам больше, я предоставлю свой точный файл регистрации из активного проекта. А также сопровождающий commons-logging.properties
файл:
<!-- ================ APPENDERS ================ -->
<appender name="ProjectAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="/blazeds/tomcat/logs/all.out" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<appender name="AspectAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="/blazeds/tomcat/logs/aspects.out" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}]\t\t%m%n" />
</layout>
</appender>
<appender name="DebugFileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="/blazeds/tomcat/logs/debug.out" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}] %-5p\t%m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.SimpleLayout" />
</appender>
<appender name="ErrorConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ABSOLUTE}] %-5p > %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
<!-- ========= LOGGERS - additive ==== -->
<logger name="com.companyname.projectname" additivity="true">
<level value="ALL" />
<appender-ref ref="ProjectAppender" />
<appender-ref ref="DebugFileAppender" />
</logger>
<logger name="com.companyname.projectname.aspects" additivity="true">
<level value="ALL" />
<appender-ref ref="AspectAppender" />
</logger>
<root>
<priority value="ALL" />
<appender-ref ref="ErrorConsoleAppender" />
</root>
Мы не ведем здесь интенсивную регистрацию, поэтому это достаточно простой пример, чтобы дать вам идею. Одна интересная особенность этой настройки ведения журналов - любой вызов log.error(string)
, который автоматически всплывает до консоли.
Поместите эти два файла в директорию src
, измените пути к выходным файлам, и вы должны увидеть отображение журналов.