我们正在为我们的应用程序编写自定义log4j appender。 appender应将其事件记录到数据库中。现在我遇到的问题是设置数据库连接。我们的jdbc设置位于名为jdbc.properties的文件中,该文件直接位于WEB-INF文件夹下。
我尝试使用以下代码访问属性文件
InputStream stream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("jdbc.properties");
...但是流导致为空。任何想法如何从log4j appender 中的WEB-INF文件夹加载属性文件,而不用将属性文件移动到另一个位置?
答案 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中?你为什么把这两个分开?