我有一个Web应用程序,其中一个JSP包含:
PropertyConfigurator.configure(System.getenv("MY_HOME") + "/cfg/log4j.properties");
我仔细检查MY_HOME
已设置
Tomcat Web服务器说:
log4j:WARN No appenders could be found for logger (com.mycompany.data.JobData).
log4j:WARN Please initialize the log4j system properly.
在其他服务器之一中,相同的设置工作正常。
任何提示?
问题是没有创建日志
答案 0 :(得分:2)
与你的答案无关,但这也有帮助。
如果是网络应用程序,最简单的方法是确保log4j.properties
位于WEB-INF/classes
文件中的WAR
文件夹中。部署应用程序时,将配置log4J。
答案 1 :(得分:1)
必须在系统中的任何内容尝试记录之前调用PropertyConfigurator以避免此警告。您可能会发现在命令行上设置log4j配置更可靠。
或者你可以忽略警告。 ;)
顺便说一句:你不想经常调用这种方法,理想情况下只需要调用一次。
答案 2 :(得分:0)
你可以尝试这个,它对我有帮助。 http://www.log4j.ru/articles/HelloWorld.html
答案 3 :(得分:0)
我能够在Apache Tomcat 6中找到运行Eclipse Dynamic Web Project的问题的解决方案。基本上,您需要从上下文中加载log4j属性文件。
两个基本步骤
(1)将log4j.properties文件放入"类目录"战争档案。
(2)从当前上下文中读取log4j属性文件。我发现执行此操作的最佳方法是访问当前线程的上下文并从那里开始工作。
对于上面的第一步,更改Eclipse构建过程以添加另一个目录,该目录最终将加载到war文件中的WEB-INF / classes目录中。具体地说....
(1)在Eclipse中,右键单击项目资源管理器中的项目,选择'新' - >'文件夹'。您可以将文件夹命名为任何名称,但在这种情况下,标准是“资源”。新文件夹应出现在项目的根级别。
(2)将log4j.properties文件移动到这个新文件夹中。
(3)再次右键单击项目,然后选择“构建路径” - >'配置构建路径'。选择“来源”'标签。点击“添加文件夹”'按钮。浏览以找到您在上面步骤(1)中创建的新文件夹。选择“确定”。
(4)回到eclipse Project Explorer视图后,请注意该文件夹现在已移至“Java资源”库中。区域(即由于eclipse表示抽象,它不再位于根区域。)
(5)清理你的项目。
(6)要验证.properties文件现在存在于war文件的WEB-INF / classes中,请将war文件导出到一个简单的位置(右键单击Project - > Export - > War file)并结帐内容。请注意,log4j.properties文件现在出现在WEB-INF / classes中。
现在进行上面的第二步,访问上下文以读取文件。在尝试读取文件的地方添加以下代码。请注意,这是从战争文件上下文中读取的,所以这应该'当war文件从服务器移动到服务器时工作。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
PropertyConfigurator.configure(classLoader.getResourceAsStream("log4j.properties") );