如何避免log4j输出外部修改

时间:2014-01-28 11:44:08

标签: java jboss logrotate

我有一个请求,要求找到一个解决方案,使运行应用程序的JBoss实例(Linux环境)的用户(非root用户)无法编辑日志文件

我的第一个想法是使用root用户的chattr +a只允许在日志文件中附加新的raw。

但是Log4j文件被配置为每天旋转文件,因此我想我应该为每天创建的每个文件重复chattr命令。 我也不确定“仅附加”状态的过去一天文件是否可以从轮换中压缩。

欢迎提出任何建议或替代方法。

1 个答案:

答案 0 :(得分:0)

一种方法是创建自己的“每日滚动文件追加器”。在类似情况下,我基于CustodianDailyRollingFileAppender创建了一个文件追加器(有关this question中的答案的详细信息,请参阅参考资料)。将您的自定义版本放在“log4j-custom.jar”中,并将其放在JBoss公共lib目录中。最后一步是更新log4j配置文件以使用自定义文件appender。

在自定义文件appender中,您可以执行命令(1)以在滚动日志文件之前和之后更改文件属性。确保使用“没有以前的日志文件”之类的“极端情况”来测试自定义滚动文件appender:我在原始保管人appender中发现了一些(易于解决)错误。

(1)或使用新的Java 7 POSIX文件系统选项。