2013-12-16 5 views
1

Я использую log4j 2.0-beta9. У меня вопрос о приставке SMTP. Мне нужно настроить объект, от и до значений из свойств. Я вход в MapMessage и мой конфигурации, как показано ниже -Настройка значений, из, значений объекта из свойств в Runtime в log4j2 SMTPAppender

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

    <appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> 
     </Console> 

     <SMTP name="Mail" subject="Error Log for ${env:HOSTNAME}" to="${sys:mail.to}" from="${sys:mail.from}" 
       smtpHost="${sys:mail.host}" smtpPort="${sys:mail.port}" smtpDebug="true" bufferSize="1"> 
      <PatternLayout> 
       <pattern>%d [%t] %-5p %c - %m%n</pattern> 
      </PatternLayout> 
     </SMTP> 

     <Async name="AsyncMail"> 
      <appender-ref ref="Mail" /> 
     </Async> 
    </appenders> 

    <loggers> 
     <root level="info"> 
      <appender-ref ref="Console"/> 
      <appender-ref ref="AsyncMail"> 
       <MapFilter onMatch="ACCEPT" onMismatch="DENY"> 
        <KeyValuePair key="throwable.class" value="java.lang.RuntimeException" /> 
       </MapFilter> 
      </appender-ref> 
     </root> 
    </loggers> 
</configuration> 


// Java Code to log the msg 
Throwable throwable; // this is the exception that is thrown by the app. 
MapMessage message = new MapMessage(); 
message.put("throwable.message", throwable.getMessage()); 
message.put("throwable.class", throwable.getClass().getName()); 
message.put("throwable.stacktrace", ExceptionUtils.getStackTrace(throwable)); // ExceptionUtils from apache-commons 
LOGGER.error(message, throwable); // org.apache.logging.log4j.Logger 

Проблема заключается в том, что ни одно из этих значений не будут заменены динамически. Есть какой-либо способ сделать это?

Заранее спасибо.

ответ

1

Вам необходимо установить mail.to и mail.from Свойства системы. Проблема, с которой вы сталкиваетесь, может заключаться в том, что вы работаете в среде Servlet 3.0, и в этом случае файл Log4j2.xml обрабатывается до, который выполняет ваш код, который устанавливает свойства.

Если это так, вы можете создать инициализатор контейнера сервлета, который вы настраиваете в файле web.xml для загрузки до загрузки инициализатора контейнера сервлета Log4j2.

 Смежные вопросы

  • Нет связанных вопросов^_^