我写了使用在GlassFish 2.1的NetBeans 6.7.1 Web服务项目,把log4j.properties项目和使用的根目录:
static Logger logger = Logger.getLogger(MyClass.class);
在构造函数:
PropertyConfigurator.configure("log4j.properties");
在功能:
logger.info("...");
logger.error("...");
// ...
但是,这是错误的信息(实际上,我试图把它几乎每一个目录,我可以实现):
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:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
示例项目可以从以下得到http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8
Answer 1:
我知道这是一个有点晚来回答这个问题,也许你已经找到了解决办法,但我张贴我找到了解决方案(后我GOOGLE了很多),所以它可能有点帮助:
- 将根据项目的WEB-INF \类log4j.properties如以前在这个线程提及。
- 在WEB-INF \ lib中把log4j的,xx.jar
- 测试是否log4j的加载:添加
-Dlog4j.debug
@ Tomcat的你的Java选项结束
希望这会有所帮助。
RGDS
Answer 2:
如前所述,log4j.properties应该是包含在类路径的目录,我想补充一点,在Maven化项目的好地方可以src/main/resources/log4j.properties
Answer 3:
您可以使用VM参数-Dlog4j.configuration =指定配置文件位置“文件:/ C:/workspace3/local/log4j.properties”
Answer 4:
你必须把它放在根目录下,对应于你的执行上下文。
例:
MyProject
src
MyClass.java
log4j.properties
如果你开始从不同的项目执行,你必须用于启动项目的执行该文件。 例如,如果一个不同的项目包含了一些JUnit测试,它需要也有它的log4j.properties文件。
我建议使用的log4j.xml代替log4j.properties的。 你有更多的选择,从你的IDE等获得援助...
Answer 5:
对于基于Maven项目保持你的log4j.properties中的src / main /资源。 没有其他事情可做!
Answer 6:
如果你把log4j.properties里面src时,不需要使用语句 -
PropertyConfigurator.configure("log4j.properties");
它会自动为属性文件在类路径中服用。
Answer 7:
尝试:
PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
Answer 8:
该文件应位于WEB-INF / classes目录下。 该目录结构应该WAR文件中打包。
Answer 9:
我的IDE是NetBeans的。 我把log4j.property文件图片所示
根
卷筒纸
WEB-INF
要使用该属性文件,你应该写这样的代码:
package example;
import java.io.File;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import javax.servlet.*;
public class test {
public static ServletContext context;
static Logger log = Logger.getLogger("example/test");
public test() {
String homeDir = context.getRealPath("/");
File propertiesFile = new File(homeDir, "WEB-INF/log4j.properties");
PropertyConfigurator.configure(propertiesFile.toString());
log.info("This is a test");
}
}
您可以从另一个JSP文件中定义静态ServletContext的上下文 。 例:
test.context = getServletContext();
test sample = new test();
现在你可以在你的项目中使用log4j.property文件。
Answer 10:
一些技术上是正确的具体答案已经提供,但总的来说,它可以在运行时类路径,即地方类由JVM寻求任何地方。
这可能是在Eclipse中/ src目录目录或已部署的应用程序的WEB-INF / classes目录,但最好要知道类路径的概念,为什么该文件被放置在里面,不要只把WEB-INF /类作为一个“神奇”的目录。
Answer 11:
我花了大量时间来弄清楚为什么log4j.properties文件是没有看到。
这时我才发现它是可见的项目,只有当它是在这两个MyProject的/目标/班/和MyProject的/ src目录/主/资源文件夹。
希望这将是给别人用。
PS:该项目是Maven的基础。
Answer 12:
我发现,Glassfish的默认情况下是看[Glassfish的安装位置] \ GlassFish的\域[域] \作为默认工作目录......你可以将在此位置log4j.properties文件,并使用PropertyConfigurator代码初始化就像之前提到的...
Properties props = System.getProperties();
System.out.println("Current working directory is " + props.getProperty("user.dir"));
PropertyConfigurator.configure("log4j.properties");
Answer 13:
我不知道这是正确的way.But它解决了我的问题。 把log4j.properties文件在“项目文件夹” /配置和使用PropertyConfigurator.configure(“配置// log4j.properties”);
它将与IDE但不工作时运行jar文件自己。 当您运行自己的jar文件只复制log4j.properties文件到该jar文件in.when在同一目录中的JAR和属性文件运行状况良好的文件夹。
Answer 14:
把log4j.properties在类路径中。 这里是2例,这将有助于你确定正确的位置 - 1.对于Web应用程序的类路径是/ WEB-INF / classes中。
\WEB-INF
classes\
log4j.properties
从主/单元测试测试类路径是源目录
\Project\ src\ log4j.properties
Answer 15:
如果你有一个标准的Maven项目设置与的IntelliJ,您可以简单地将属性文件中的log4j的:
项目/ src目录/主/资源
的IntelliJ - log4j属性位置
Answer 16:
其实,我刚刚经历了一个参考标准的Java项目结构这个问题如下:
\myproject
\src
\libs
\res\log4j.properties
在Eclipse中我需要添加res文件夹到构建路径,然而,在的IntelliJ,我需要为链接的屏幕截图显示,以纪念res文件夹视为资源: 右键单击res文件夹,并标记为资源 。
Answer 17:
有很多方法可以做到这一点:
WAY1:如果你想在Maven项目,而无需使用PropertyConfigurator
首先:检查在SCR /主资源目录
if available,
then: create a .properties file and add all configuration details.
else
then: create a directory named resources and a file with .properties
write your configuration code/details.
如下截图:
Way2:如果你想使用的Java / Maven项目使用PropertyConfigurator属性文件
地方性质的任何地方文件中的项目,并给予正确的路径。 说:SRC / javaLog4jProperties / log4j.properties
静态的{
PropertyConfigurator.configure("src/javaLog4jProperties/log4j.properties");
}
Way3:如果你想有java / Maven项目使用DOMConfigurator XML
地方性质的任何地方文件中的项目,并给予正确的路径。 说:SRC / javaLog4jProperties /的log4j.xml
静态的{
DOMConfigurator.configure("src/javaLog4jProperties/log4j.xml");
}
文章来源: Where should I put the log4j.properties file?