2016-04-27 2 views
0

У меня есть веб-приложение с jee6 и log4j 2. У меня есть собственный журнал для моего пакетного процесса, я устанавливаю настраиваемый уровень для заполнения журналами пакета.Log4j 2 пользовательский уровень на Jboss 6.4

Но я ничего не могу зарегистрировать, при запуске сервера я могу создать файл журнала server.log, но пуст, а в файле error_batch.log есть все журналы: .info и мой пользовательский уровень, у меня есть а не ошибки на сервере, что такое правильная конфигурация для моего дела ??

private static final Logger logger = LogManager.getLogger(test.class); 

-

logger.info("Starting on the Server"); 
logger.log(Level.forName("ERROR_BATCH", 450), "Example Error in Batch"); 

-

<?xml version="1.0" encoding="UTF-8"?> 

<Configuration status="WARN"> 

    <CustomLevels> 
     <CustomLevel name="ERROR_BATCH" intLevel="450" /> 
    </CustomLevels> 

    <Appenders> 

     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 

     <RollingFile name="logBatch" fileName="C:\\Workarea\\Error\\error_batch.log" 
        filePattern="C:\\Workarea\\Error\\error_batch-%d{dd-MM-yyyy}-%i.log" 
        append="true"> 
      <PatternLayout> 
       <Pattern>%d %p %c [%t] %m%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="1 MB"/> 
      </Policies> 
      <DefaultRolloverStrategy max="5"/> 
     </RollingFile> 

     <RollingFile name="logServer" fileName="C:\\Workarea\\Error\\server.log" 
        filePattern="C:\\Workarea\\Error\\server-%d{dd-MM-yyyy}-%i.log" 
        append="true"> 
      <PatternLayout> 
       <Pattern>%d %p %c [%t] %m%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="1 MB"/> 
      </Policies> 
      <DefaultRolloverStrategy max="5"/> 
     </RollingFile> 

    </Appenders> 

    <Loggers> 
     <Root level="error"> 
      <AppenderRef ref="Console" /> 
      <AppenderRef ref="logServer" /> 
     </Root> 
     <Root level="info"> 
      <AppenderRef ref="Console" /> 
      <AppenderRef ref="logServer" /> 
     </Root> 
     <Root level="debug"> 
      <AppenderRef ref="Console" /> 
      <AppenderRef ref="logServer" /> 
     </Root> 
     <Root level="trace"> 
      <AppenderRef ref="logBatch" level="ERROR_BATCH" /> 
     </Root> 
    </Loggers> 

</Configuration> 

ответ

1

Это выглядит как дубликат How to log in different file? log4j2, который, в свою очередь, является дубликатом ранее заданный вопрос.

Основная проблема заключается в том, что вы можете настроить корневой журнал один раз, а не 4 раза, как вы делаете. Я предполагаю, что с уровнем = «ошибка» является «победой», но я не уверен.

Как получить события в определенных файлах журналов, пожалуйста, обратитесь к ответу, указанному вами в вопросе, который вы задали ранее.

0
logger.log(Level.forName("ERROR_BATCH", 450), "Example Error in Batch"); 

и

<CustomLevels> 
    <CustomLevel name="ERROR_BATCH" intLevel="450" /> 
</CustomLevels> 

являются дубликатами. Вы определяете свой настраиваемый уровень дважды, а второй (в коде) должен переопределять первый (в файле конфигурации).

Удалите его в своем коде. Он должен работать.