2016-04-15 106 views
2

我正在尝试使用IntelliJ IDEA Community 2016.1,JDK 1.8和log4j 2.5来设置一个“hello world”风格的类,以吐出一些日志。我已经尝试了.properties文件和程序化配置;对产出没有任何影响。我的log4j配置更改没有任何影响输出。 (在IntelliJ中)

我的属性文件不起作用。

几乎所有我在Stackoverflow上看到的这种性质的问题表明,属性文件需要在类路径上。要清楚,我的配置似乎是在类路径上,因为我不再收到log4j错误消息,它无法找到属性文件。我也试着指定它

-Dlog4j.configurationFile=[FULLY SPECIFIED PATH] 

并没有看到输出的变化。

编程配置也不起作用。

我试过使用基本配置器(从样本再次撕开),我仍然看不到输出的变化。

要清楚:是否找到属性文件,输出是完全相同,除了“找到没有找到log4j2配置文件”消息或没有合理的方式。

这里是我的代码:

import org.apache.logging.log4j.Logger; 
import org.apache.logging.log4j.LogManager; 

public class HelloWorld { 
public static void main(String[] args) { 
    Logger logger = LogManager.getLogger(HelloWorld.class); 

    logger.info("Hello World of logging!"); 
    logger.info("Working Dir: " + System.getProperty("user.dir")); 

    logger.debug("debug test"); 
    logger.info("info test"); 
    logger.warn("warn test"); 
    logger.error("error test"); 

    if (!logger.isDebugEnabled()) 
     logger.error("Debug isn't enabled. :("); 

    if (!logger.isInfoEnabled()) 
     logger.error("Info isn't enabled. :("); 

    if (!logger.isWarnEnabled()) 
     logger.error("Warn isn't enabled. :("); 

} 

这里是它在控制台完整的输出:

"C:\Program Files\Java\jdk1.8.0_77\bin\java" ... 
09:51:10.142 [main] ERROR HelloWorld - error test 
09:51:10.142 [main] ERROR HelloWorld - Debug isn't enabled. :(
09:51:10.142 [main] ERROR HelloWorld - Info isn't enabled. :(
09:51:10.143 [main] ERROR HelloWorld - Warn isn't enabled. :(

Process finished with exit code 0 

我已经尝试过许多不同的配置文件(所有的.properties的非xml品种)从the manual到无济于事:没有改变输出格式。这是我一直使用的第一个例子,因为这是他们使用的第一个例子。尽管DEBUG级别的设置只能看到ERROR级别的消息,并且格式根本不符合ConversionPattern。

# Set root logger level to DEBUG and its only appender to A1. 
log4j.rootLogger=DEBUG, A1 

# A1 is set to be a ConsoleAppender. 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 

# A1 uses PatternLayout. 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 

的这两个log4j2罐子下我外部库我的项目中部分:的log4j-API 2.5jarlog4j的核心 - 2.5.jar;代码编译并运行。

我在这里完全丧失,但仍然在我的手中。如果您有任何想法或曾经见过,我真的很感激您的想法。提前谢谢你。

+0

您是否尝试过简单的xml-config? – Fildor

+0

似乎类似的问题在这里讨论[这里](http://stackoverflow.com/questions/14733698/log4j-2-configuration-issue?rq=1) – Shivakumar

+0

呃,你链接到log4j 1.2手册。我想你应该坚持log4j 2手册:http://logging.apache.org/log4j/2.x/manual/configuration.html – Fildor

回答

0

Per Fildor在上面的评论,我的问题是,我其实是在看错误的手册。 :\我上面的链接是v1.2,而我使用的是log4j v2.5。

这两个版本之间有非常显着的区别,只要它们是如何配置的。

这个配置XML作品:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Root level="debug"> 
      <AppenderRef ref="Console"/> 
     </Root> 
    </Loggers> 
</Configuration> 

生产这种输出:

10:53:25.385 [main] INFO HelloWorld - Hello World of logging! 
10:53:25.385 [main] INFO HelloWorld - Working Dir: C:\Users\thade\IdeaProjects\HelloWorldOfLogging 
10:53:25.386 [main] DEBUG HelloWorld - debug test 
10:53:25.386 [main] INFO HelloWorld - info test 
10:53:25.386 [main] WARN HelloWorld - warn test 
10:53:25.386 [main] ERROR HelloWorld - error test 

这里的the manual you want,如果你遇到这样的。如果我猜测我是如何到达这里的,那是因为我最初开始使用slf4j,它与log4j 1.2 API一起工作,虽然有API桥接器,但放入1.2手册是一个错误。

感谢大家这么快就收拾行李。

相关问题