Intellij idea 在IDEA中查找log4j.properties

Intellij idea 在IDEA中查找log4j.properties,intellij-idea,log4j,Intellij Idea,Log4j,更新-这个问题是我自己造成的 在某个阶段,这个特定的测试类进行了一次测试,以确保记录了一些内容。在设置中,我之前删除了所有appender,并添加了自己的appender,用于进行测试时断言。这个测试已经过去很久了,但这个金块仍然保留在设置中:Logger.getRootLogger().removeallappendes() 对不起,这是虚惊一场。:) 在IDEA中,我有以下测试: @Test public void shouldLog() { URL resource = Thre

更新-这个问题是我自己造成的

在某个阶段,这个特定的测试类进行了一次测试,以确保记录了一些内容。在设置中,我之前删除了所有appender,并添加了自己的appender,用于进行测试时断言。这个测试已经过去很久了,但这个金块仍然保留在设置中:
Logger.getRootLogger().removeallappendes()

对不起,这是虚惊一场。:)


在IDEA中,我有以下测试:

@Test
public void shouldLog() {
    URL resource = Thread.currentThread().getContextClassLoader()
        .getResource("log4j.properties");
    System.out.println("resource = " + resource);
    final Logger logger = Logger.getLogger(getClass());
    logger.info("Hello world");
}
因此,它输出:

"C:\Program Files\Java\jdk1.5.0_18\bin\java" -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 11.1\lib\idea_rt.jar" -ea -Dfile.encoding=UTF-8 com.intellij.rt.execution.CommandLineWrapper C:\DOCUME~1\JMAWSO~1.NT3\LOCALS~1\Temp\classpath2294205410661538428.tmp @vm_params C:\DOCUME~1\JMAWSO~1.NT3\LOCALS~1\Temp\vm_params5645362020129462784.tmp com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 au.com.gmm.repo.RepoThreadCleanupServiceTest,shouldLog
resource = file:/C:/user/jem/projects/GMM/out/test/cashflow/log4j.properties
log4j:WARN No appenders could be found for logger (au.com.gmm.repo.RepoThreadCleanupServiceTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Process finished with exit code 0
这是一个著名的问题,很多新手都会反复看到。今天被它难住了,我觉得有点傻

说明
log4j使用Thread.getContextClassLoader().getResource()来定位默认配置文件
。但是,我的测试检查了
Thread.currentThread().getContextClassLoader().getResource(“log4j.properties”)
,发现属性文件没有问题

该文件的内容是:

log4j.rootLogger=DEBUG, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} %c - %m%n

我在IntelliJ IDEA中使用log4j和slf4j,它非常适合我。只需将这些JAR包含到IntelliJ中的应用程序依赖项中:

log4j-1.2.9.jar
slf4j-api-1.5.11.jar
slf4j-log4j12-1.5.11.jar
然后将log4j配置放在应用程序的某个地方。但不要忘记将IntelliJ中log4j.properties的位置标记为源,或者在测试中将其用作测试源时:

log4j.properties:

log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} - %m%n

log4j.logger.your.app=DEBUG,yourApp
log4j.additivity.your.app=false
log4j.logger.yourApp=DEBUG,yourApp
log4j.additivity.yourApp=false
log4j.appender.yourApp=org.apache.log4j.ConsoleAppender
log4j.appender.yourApp.layout=org.apache.log4j.PatternLayout
log4j.appender.yourApp.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} %m%n
log4j.appender.yourApp.ImmediateFlush=true
然后在java类中使用以下命令获取记录器:

private static final Logger LOGGER = LoggerFactory.getLogger(YourApp.class);
并且您将不会看到任何警告,如:
找不到记录器的附加程序


希望这有帮助。

谢谢您的回答。不幸的是,这没用。哎呀,问题是我自己的错。见更新的问题。答案正确,但slf4j不是必需的,您可以稍微减少log4j.properties。