弄清楚Spring Logging

时间:2017-06-20 11:16:18

标签: java spring logging log4j

我继承了一个很好的,混乱的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或类似的东西,没有任何改变。

1 个答案:

答案 0 :(得分: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文件。配置来自此属性文件,并相应地进行格式化。