Как интегрировать Spring log4j с messages.properties?

#spring-boot

#spring-boot

Вопрос:

Я хочу реализовать метод, который выводит журнал на основе значения message.proerpties, используя следующий интерфейс. Что мне делать? logger#info(String messagePropertyKey, Object[] placeholderValues)

Спасибо.

Ответ №1:

Предполагая, что ваш файл message.properties:

 messages.success= the service {} is called successfully. 
messages.error= the service {} failed with reason {}. 
  
 @Configuration
@ConfigurationProperties
@PropertySource("classpath:message.properties")
public class LogMessagesHolder {

    private Map<String, String> messages;
    
    public String getMessage(final String key){
    return messages.get(key);
    }


}
  

Теперь вы можете использовать LogMessagesHolder , автоматически подключив его туда, куда хотите

 @Slf4J
@Component
public class LogMessagesHolderTest {

    @Autowired
    private LogMessagesHolder logMessagesHolder

    public void testLogSuccess() {
        logger.info(logMessagesHolder.getMessage("success"), serviceA);
    }

    public void testLogError() {
        logger.error(logMessagesHolder.getMessage("error"), "serviceA", "failureReason");
    }
}