我有一个请求,要求找到一个解决方案,使运行应用程序的JBoss实例(Linux环境)的用户(非root用户)无法编辑日志文件
我的第一个想法是使用root用户的chattr +a
只允许在日志文件中附加新的raw。
但是Log4j文件被配置为每天旋转文件,因此我想我应该为每天创建的每个文件重复chattr
命令。
我也不确定“仅附加”状态的过去一天文件是否可以从轮换中压缩。
欢迎提出任何建议或替代方法。
答案 0 :(得分:0)
一种方法是创建自己的“每日滚动文件追加器”。在类似情况下,我基于CustodianDailyRollingFileAppender创建了一个文件追加器(有关this question中的答案的详细信息,请参阅参考资料)。将您的自定义版本放在“log4j-custom.jar”中,并将其放在JBoss公共lib目录中。最后一步是更新log4j配置文件以使用自定义文件appender。
在自定义文件appender中,您可以执行命令(1)以在滚动日志文件之前和之后更改文件属性。确保使用“没有以前的日志文件”之类的“极端情况”来测试自定义滚动文件appender:我在原始保管人appender中发现了一些(易于解决)错误。
(1)或使用新的Java 7 POSIX文件系统选项。