我应该在哪里放置log4j.properties文件?(Where should I put the

2019-07-19 20:38发布

我写了使用在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了很多),所以它可能有点帮助:

  1. 将根据项目的WEB-INF \类log4j.properties如以前在这个线程提及。
  2. 在WEB-INF \ lib中把log4j的,xx.jar
  3. 测试是否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
  1. 从主/单元测试测试类路径是源目录

     \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?