背景
在一个客户那边要求系统生成的日志文件权限为600,而系统用的是Log4j1.X来记录日志的,默认权限是644。
解决办法
解决此问题需明确两点即可解决:
1、在哪里去设置日志文件权限?
2、如何设置日志文件权限?
对于第一个问题,会用Log4j的同学应该都知道我们可以自定义Appender来控制日志输出相关很多事情,当然包括输出的目标文件,那么就可以确定我们是可以通过自定义Appender来处理这个问题。
接下来是第二个问题,如何设置日志文件权限。大家知道一般要求控制文件权限都是在Linux系统中,windows一般不存在这种要求;在Linux中很自然的就能想到通过chmod命令就可以解决,但是出于自己对Java的那点小执着,chmod并不是我的第一选项,我还是希望通过Java方法来设置,这时就需要用到PosixFilePermission了,实现代码很简单:
public class MyRollingFileAppender extends RollingFileAppender {
@Override
public synchronized void setFile(String fileName, boolean append,
boolean bufferedIO, int bufferSize) throws IOException {
super.setFile(fileName, append, bufferedIO, bufferSize);
File f =