2015-10-24 3 views
0

Я запускаю приложение командной строки. Я запускаю Lo4j2. Все работает, но я хотел бы отключить преамбулу Spring, которая, кажется, запускается до загрузки Log4J. Позвольте мне быть ясным, Log4J работает правильно, но преамбула сообщений о регистрации в Spring приходит, как только загружается контекст приложения.Spring Context startup, preamble silence

т.е. я не хочу видеть эту

Oct 24, 2015 9:07:29 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO: Refreshing org[email protected]42a48628: startup date [Sat Oct 24 09:07:29 BST 2015]; root of context hierarchy Oct 24, 2015 9:07:29 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [springConfig.xml]

Любая помощь высоко ценится, спасибо!

ответ

0

Вы должны иметь следующие зависимости: * включая log4j-1.2-апи *

compile group: 'org.apache.logging.log4j', name: 'log4j', version: log4j2_version 
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: log4j2_version 
compile group: 'org.apache.logging.log4j', name: 'log4j-1.2-api', version: log4j2_version 
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: log4j_slfj_binder_version 

ли ваш log4j2.xml сконфигурированной как это. Я тестировал с Log4j2

<Configuration > 
    <Appenders> 
    <Console name="CONSOLE" target="SYSTEM_OUT"> 
     <PatternLayout pattern=">%d{dd MMM yyyy HH:mm:ss,SSS} [%-5p] %X{trxID} %.20X{userName}[%c{2}] %m%n"/> 
    </Console> 
    </Appenders> 


    <Loggers> 
    <Logger name="org.springframework.context.support" level="ERROR" additivity="false"> 
     <AppenderRef ref="CONSOLE" level="ERROR"/> 
    </Logger> 
    <Logger name="org.springframework.beans.factory.xml" level="ERROR" additivity="false"> 
     <AppenderRef ref="CONSOLE" level="ERROR"/> 
    </Logger> 
    <Root level="INFO" additivity="false"> 
     <AppenderRef ref="CONSOLE"/> 
    </Root> 
    </Loggers> 
</Configuration> 

Программа испытаний My:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.context.support.AbstractApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class TestLog { 

    String springConfig = "spring-config/insight-test-context.xml"; 

    private static final Logger slf4jLogger = LoggerFactory.getLogger(TestLog.class); 

    private AbstractApplicationContext ctx; 

    public static void main(String[] args) { 
     new TestLog().doTest(); 
    } 

    public void doTest() { 
     slf4jLogger.info("--------Staring TestLog---------------"); 
     ctx = new ClassPathXmlApplicationContext(springConfig); 
     ctx.registerShutdownHook(); 
     slf4jLogger.info("----------Completed TestLog------------"); 
    } 

} 
+0

Спасибо за ваш ответ, - но это не работает для меня. Возможно, вам нужно протестировать log4j2. Примечание: это только преамбула, от которой мне нужно избавиться. –

+0

Привет, Амит. Благодарю вас за ваш ответ, но это не сработает. Я пробовал такое. Кажется, что во время ClassPathXmlApplicationContext до тех пор, пока XmlBeanDefinitionReader не прочитает файл springConfig.xml, регистрация не будет log4J. –

+0

Эй, этот пример кода гарантирует, что контекст журнала будет инициализирован до использования контекста весны. Кроме того, вам нужно было дважды проверить, что у вас лог44-1.2-апи. –