我有一个基于spring框架(3.2.12)的cli工具,它使用logback(1.23)进行日志记录。
我的问题是,日志配置在app cxt加载之前不会生效,从而用init过程的日志污染了命令行。有没有办法强制spring首先加载和使用日志配置?
主要类别:
public class MyCliMain {
private static final JcanLogger LOG = SessionLogFactory.getLog(MyCliMain.class);
public static void main(String[] args) {
int exitCode;
ApplicationContext cxt = initApplicationContext();
exitCode = cxt.getBean(CommandRunner.class).run(args);
System.exit(exitCode);
}
private static ApplicationContext initApplicationContext() {
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("spring-pay-bus-cli-G8Q.xml");
cxt.registerShutdownHook();
return cxt;
}}
资源中的logback配置:
<appender name="writeToConsole" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>%level %logger{5} - %msg%n</pattern>
</encoder>
</appender>
<appender name="writeToFile" class="ch.qos.logback.core.FileAppender">
<file>${log.output}</file>
<encoder>
<pattern>%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="WARN"/>
<logger name="com..." level="DEBUG" appender-ref="writeToFile"/>
<logger name="com... level="DEBUG"/>
<root level="WARN">
<appender-ref ref="writeToConsole"/>
<appender-ref ref="writeToFile" />
</root>
控制台注销输出:
Apr 01, 2021 4:07:23 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7c16905e: startup date [Thu Apr 01 16:07:23 CEST 2021]; root of context hierarchy
Apr 01, 2021 4:07:23 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
...
logging config takes effect:
WARN o.a.c.j.u.ResourceUtils - No resource methods have been found for resource class org.apache.cxf.jaxrs.client.WebClient
WARN o.a.c.j.u.ResourceUtils - No resource methods have been found for resource class org.apache.cxf.jaxrs.client.WebClient
WARN o.a.c.j.u.ResourceUtils - No resource methods have been found for resource class org.apache.cxf.jaxrs.client.WebClient
INFO c.u.s.v.c.CommandRunner -
暂无答案!
目前还没有任何答案,快来回答吧!