Java log4j.properties 文件 - 警告在 Eclipse 中找不到记录器的附加程序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20246639/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 00:34:05  来源:igfitidea点击:

log4j.properties file - WARN No appenders could be found for logger at eclipse

javalogginglog4j

提问by nazar_art

I tried to configure log4j with `log4j.properties' file.

我尝试使用“log4j.properties”文件配置 log4j。

All work but but I caught some strange warning:

一切正常,但我发现了一些奇怪的警告:

log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfigfor more info.

log4j:WARN 找不到记录器 (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager) 的附加程序。log4j:WARN 请正确初始化 log4j 系统。log4j:WARN 有关更多信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig

I couldn't figure out what is wrong with this. All should work.

我无法弄清楚这有什么问题。一切都应该工作。

Content of log4j.properties:

log4j.properties 的内容:

# Root logger option
log4j.rootLogger=warn, stdout, file 

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n 

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.file=logs/oms_test.log
log4j.appender.file.MaxFileSize=2MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n 

log4j.appender.debugfile=org.apache.log4j.RollingFileAppender
log4j.appender.debugfile.file=logs/oms_test-debug.log
log4j.appender.debugfile.layout=org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n 
log4j.logger.com.softserve.edu=DEBUG, debugfile
log4j.logger.com.my.app.somepackage.subpackage.ClassName=INFO

Here is struckture of project:

这是项目的截图:

project struckture

项目建设

EDIT:

编辑:

I load log4j.properties from code:

我从代码加载 log4j.properties:

PropertyConfigurator.configure("src/resourses/log4j.properties");
Logger.getRootLogger();

Edit2:

编辑2:

I tried change location log4j.propertiesat different location as src/main/resoursesor src/test/resourses, src/resoursesand changed loading from code.

我尝试将log4j.properties不同位置的位置更改为src/main/resoursesor src/test/resoursessrc/resourses并更改了从代码加载。

And always it fails:

而且总是失败:

log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:372)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:403)
    at com.softserve.edu.SearchingOrdersPageTest.setUp(SearchingOrdersPageTest.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.junit.runners.model.FrameworkMethod.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Jdk14Logger");
System.setProperty("webdriver.chrome.driver","C:\Users\gwda\Desktop\chromedriver.exe"); 
WebDriver s1 = new ChromeDriver();
0(ParentRunner.java:42) at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) log4j:ERROR Ignoring configuration file [log4j.properties].
  • How to solve this trouble?
  • 如何解决这个烦恼?

采纳答案by A.Vila

I had the same problem, and I've solved it when I put log4j.xml in WEB-INF/classes

我遇到了同样的问题,当我将 log4j.xml 放在 WEB-INF/classes 中时我已经解决了

Check this post and answer initialize log4j.

检查这篇文章并回答initialize log4j

回答by Engine Bai

Put log4j.propertiesto bin(classpath) may solve your problem.

Put log4j.propertiesto bin(classpath) 可能会解决您的问题。

回答by NGOWDA

just paste the below code.

只需粘贴下面的代码。

     PropertyConfigurator.configure("D:\logs\log4j.properties");    

     final Logger  LOGGER = Logger.getRootLogger();
     LOGGER.info("sddd");
     LOGGER.debug("ffff");**

This may resolve your trouble.

这可能会解决您的问题。

回答by Sanjay-Dev

Where ever you put log4j.properties make sure you call that using propertyconfigurator as shown below

无论你把 log4j.properties 放在哪里,请确保你使用 propertyconfigurator 调用它,如下所示

##代码##