2017-06-20 55 views
0

我已经继承了一个凌乱的Spring MVC应用程序。有些事情不起作用,我想启用DEBUG或甚至TRACE日志记录来获取更多信息,并发现即使这样也不那么简单。搞清春季日志

启动应用程序时(通过从Eclipse运行Tomcat 8服务器),它似乎输出两种日志消息。以下是第一种示例:

Jun 20, 2017 1:47:07 PM org.hibernate.Version logVersion INFO: 
HHH000412: Hibernate Core {4.3.8.Final} Jun 20, 2017 1:47:07 PM 
org.hibernate.cfg.Environment <clinit> INFO: HHH000206: 
hibernate.properties not found Jun 20, 2017 1:47:07 PM 
org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: 
Bytecode provider name : javassist 

这些消息全部呈红色。第二种看起来是这样的:

13:47:16.949 [localhost-startStop-1] INFO org.springframework.web.servlet.DispatcherServlet:489 - FrameworkServlet 'spring': initialization started 
13:47:16.952 [localhost-startStop-1] INFO org.springframework.web.context.support.XmlWebApplicationContext:583 - Refreshing WebApplicationContext for namespace 'spring-servlet': startup date [Tue Jun 20 13:47:16 IDT 2017]; parent: Root WebApplicationContext 
13:47:16.952 [localhost-startStop-1] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader:317 - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring-servlet.xml] 

这些都是黑色的。

显然至少有两种活动日志格式。这是它变得奇怪:

我发现许多log4j2.xml以及log4j.properties文件。他们都似乎被忽略。改变它们没有区别。我只是将它们全部删除,并且不影响日志输出。另外,log4j 1.2,log4j 2.0.2和slf4j都是Maven的依赖关系。 pom.xml引用版本1.2,其他Maven依赖可能需要其他版本。

我的问题是 - 我该如何配置自己的日志?在WEB-INF下放置一个log4j.xml文件(所有其他属性文件都位于该文件中)没有任何区别。在那里放置一个log4j.properties文件。我需要以某种方式打开log4j本身的调试打印输出,所以我可以找出它从哪里读取它的配置。

我试着将-Dlog4j.debug作为VM参数添加到Tomcat运行配置中。除了印刷-Dlog4j.debug command line argument或类似的东西,没有任何改变。

回答

0

您可以使用我用于我的项目的以下代码片段。在这里,类名称为FolderReader.class,并将lo4j.properties文件放在文件夹“conf”中。在运行应用程序时通过参数“../conf/log4j.properties”作为args [2]参数。

final FileSystemXmlApplicationContext applicationContext = new FileSystemXmlApplicationContext(args[0]); 
    Logger logger=Logger.getLogger(FolderReader.class); 
    PropertyConfigurator.configure(args[2]); 
    logger.info("Intializing beans.."); 
    ServiceContext serviceContext = (ServiceContext) BeanFactoryLocator.getBean("serviceContext"); 

PropertyConfigurator.configure(args [2]);从位置加载log4j.properties文件。从此属性文件中取得配置,并相应地完成格式化。