我使用log4j登录我的应用程序。在每个课程中,我都需要记录以下内容:
Properties props = new Properties();
try {
props.load(new FileInputStream("/log4j.properties"));
} catch (Exception e){
LOG.error(e);
}
PropertyConfigurator.configure(props);
log4j.properties放置在文件夹/ src / main / resources /
中路径/log4.properties由IDEA提供为复制引用。当我启动我的应用程序时,它显示FileNotFoundException
答案 0 :(得分:4)
请勿使用FileInputStream
。
java.io
及其配置使用当前工作目录,即执行JVM的目录,而不是代码工作区。
为了说明这一点,请考虑以下代码
class ReadFrmFile {
public static void main(String args[]) {
FileInputStream fin = New FileInputStream("intemp.txt");
}
}
如果代码是从C:\TEMP
执行的,则intemp.txt
在这种情况下应该位于工作目录(C:/TEMP
)中。如果不是,这将抛出FileNotFoundException
。文件名的路径始终是绝对的,而不是相对的。
为了避免硬编码,最好的方法是将所有必需的文件放在类路径中并使用getResourceAsStream
()加载它们。
Properties props = new Properties();
try {
InputStream inStream = **YOUR_CLASS_NAME**.class.getResourceAsStream("/log4j.properties");
props.load(inStream);
} catch (Exception e){
LOG.error(e);
}
PropertyConfigurator.configure(props);
答案 1 :(得分:1)
log4j在类路径中查找log4j.properties
文件,因此如果文件根目录中不存在,则不需要使用类PropertyConfigurator
。类路径。
在Spring MVC + Log4j Integration Example中,您会看到: