log4j записывает в файл только сообщения определенного класса - PullRequest
4 голосов
/ 15 сентября 2011

Во внешнем файле я хотел бы записать вывод моего класса com.foo.test в определенный файл, но происходит добавление в него журнала консоли, а также файла журнала. Ниже моя конфигурация xml,

<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/server.log"/>
      <param name="Append" value="false"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
 <layout class="org.apache.log4j.PatternLayout">
</layout>
</appender>

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="INFO"/>

      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>
<appender name="MYTESTAPPENDER" class="org.jboss.logging.appender.RollingFileAppender">
        <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
        <param name="File" value="${jboss.server.home.dir}/log/mytest.log"/>
        <param name="Append" value="false"/>
        <param name="MaxFileSize" value="3MB"/>
        <param name="MaxBackupIndex" value="3"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
        </layout>
    </appender>
 <logger name="testsplitlogger" additivity="false">
<level value="info"/>
 <appender-ref ref="MYTESTAPPENDER"/>
 </logger>
 <root>
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="FILE"/>
      <appender-ref ref="MYTESTAPPENDER"/>
   </root>

И мой код Java,

private static final Logger logger = Logger.getLogger("testsplitlogger");

Обновление: Проблема заключается в том, что он регистрирует все выходные данные консоли и других выходных файлов в файле mytest.log. Вместо этого я хочу добавить только информационные сообщения из моего testsplitlogger для определенного класса, а другие журналы из консоли и файл должны быть записаны в server.log.

Я что-то не так делаю?

Ответы [ 3 ]

0 голосов
/ 15 сентября 2011

EDIT: Похоже, вы обновили вопрос со времени моей последней публикации ... Итак, мое следующее предложение уже учтено вами.

Тестовый разделитель также должен содержать ссылку на приложение.

<logger name="testsplitlogger" additivity="false">
   <level value="info" />
   <appender-ref ref="MYTESTAPPENDER" />
</logger>

Вот хорошая ссылка, на которую вы можете сослаться http://wiki.apache.org/logging-log4j/Log4jXmlFormat

0 голосов
/ 26 июня 2013

Вам нужно создать категорию для этого:

<category name="my.company.package" additivity="false">
    <priority value="info" />
    <appender-ref ref="MYTESTAPPENDER" />
</category>
0 голосов
/ 15 сентября 2011

Пожалуйста, посмотрите конфигурацию xml. Вы разрешаете направлять журнал на все три разных файла.

  1. КОНСОЛЬ (system.out)
  2. FILE (в данном случае server.log) и
  3. MYTESTAPPENDER (mytest.log)

По вашему требованию вы должны определить это следующим образом.

<root>
<priority value="info"/>       
<!--<appender-ref ref="CONSOLE"/>-->       
<!--<appender-ref ref="FILE"/>-->       
<appender-ref ref="MYTESTAPPENDER"/>    
</root> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...