从log4j appender中的WEB-INF文件夹加载属性文件

时间:2011-12-14 08:17:52

标签: java properties log4j classloader

我们正在为我们的应用程序编写自定义log4j appender。 appender应将其事件记录到数据库中。现在我遇到的问题是设置数据库连接。我们的jdbc设置位于名为jdbc.properties的文件中,该文件直接位于WEB-INF文件夹下。

我尝试使用以下代码访问属性文件

InputStream stream = Thread.currentThread().getContextClassLoader()
                    .getResourceAsStream("jdbc.properties");

...但是流导致为空。任何想法如何从log4j appender 中的WEB-INF文件夹加载属性文件,而不用将属性文件移动到另一个位置?

2 个答案:

答案 0 :(得分:1)

可能你可以试试,

 String  path =Thread.currentThread().getContextClassLoader().getResource("/").toURI().resolve("../jdbc.properties").getPath();
 Properties ps=new Properties();
 ps.load(new FileInputStream(path));

答案 1 :(得分:0)

您应该能够通过ServletContext获取文件。即:

ServletContext ctx = ...
InputStream stream = ctx.getResourceAsStream("/WEB-INF/jdbc.properties"); 

好的,只是看到你无法访问ServletContext - 忘掉答案了。

是不是可以将jdbc连接的信息添加到log4j.properties中?你为什么把这两个分开?