mon*_*ono 130 java netbeans log4j glassfish
我使用netbeans 6.7.1和glassfish v2.1编写了一个Web服务项目,将log4j.properties放到项目的根目录并使用:
static Logger logger = Logger.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
在构造函数中:
PropertyConfigurator.configure("log4j.properties");
Run Code Online (Sandbox Code Playgroud)
和功能:
logger.info("...");
logger.error("...");
// ...
Run Code Online (Sandbox Code Playgroud)
但是,它是错误信息(实际上,我试图将它几乎放在我能够实现的每个目录上):
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.
Run Code Online (Sandbox Code Playgroud)
小智 112
我知道回答这个问题有点晚了,也许你已经找到了解决方案,但是我发布了我找到的解决方案(在我搜索了很多之后)所以它可能会有所帮助:
-Dlog4j.debug@tomcat的java选项的结尾希望这会有所帮助.
RGDS
sti*_*vlo 44
如前所述,log4j.properties应该在类路径中包含的目录中,我想在mavenized项目中添加一个好地方可以 src/main/resources/log4j.properties
Mak*_*tun 26
您可以使用VM参数指定配置文件位置-Dlog4j.configuration ="file:/ C:/workspace3/local/log4j.properties"
KLE*_*KLE 25
您必须将它放在根目录中,该目录对应于您的执行上下文.
例:
MyProject
src
MyClass.java
log4j.properties
Run Code Online (Sandbox Code Playgroud)
如果从另一个项目开始执行,则需要在用于开始执行的项目中包含该文件.例如,如果一个不同的项目包含一些JUnit测试,则它还需要具有log4j.properties文件.
我建议使用log4j.xml而不是log4j.properties.您有更多选择,从IDE获得帮助等等......
Ani*_*Ani 13
如果将log4j.properties放在src中,则不需要使用该语句 -
PropertyConfigurator.configure("log4j.properties");
Run Code Online (Sandbox Code Playgroud)
它将在属性文件位于类路径中时自动获取.
小智 10
尝试:
PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
Run Code Online (Sandbox Code Playgroud)
我的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");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以从另一个JSP文件定义静态ServletContext上下文.例:
test.context = getServletContext();
test sample = new test();
Run Code Online (Sandbox Code Playgroud)
现在,您可以在项目中使用log4j.property文件.
已经提供了一些技术上正确的特定答案,但一般来说,它可以位于运行时类路径的任何位置,即JVM寻找类的任何位置.
这可能是Eclipse中的/ src目录或部署的应用程序中的WEB-INF/classes目录,但最好注意类路径概念以及文件放在其中的原因,不要只处理WEB-INF /类作为"魔术"目录.
我花了很多时间来弄清楚为什么没有看到log4j.properties文件.
然后我注意到只有当它在MyProject/target/classes /和MyProject/src/main/resources文件夹中时才可见.
希望它对某人有用.
PS:该项目以maven为基础.