解决log4j⽣成的log⽇志⽂件读写权限问题
java web项⽬使⽤⾮管理员⽤户部署到Unix/Linux Weblogic服务器上时,由于weblogic 的$DOMAINS_HOME/bin/startWeblogic.sh ⽂件中配置的umask值为022,所以⽣成的log⽇志⽂件的读写默认权限为rw-r–r-- ,导致其他⽤户⽆法操作⽇志⽂件,⽐如说运维⽤户会定期清理历史⽇志⽂件。
解决⽅案:
(参考⾃)
1.Log4j
2.9以上版本可以File上增加filePermissions配置
<file name=“File”fileName=“my.log”filePermissions=“rwxr-xr-x”>
<PatternLayout pattern=“%m%n”/>
</file>
2.Log4j 2.9以下版本可以通过继承RollingFileAddpender或者DailyRollingFileAppender来实现
log4j.properties配置⽂件:
log4j.appender.Log4jWriter
log4j.appender.file.Threhold=INFO
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.File=/home/ap/projweb/log/my.log
log4j.appender.file.DatePattern=.yyyyMMdd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.ConversinPattern=%-d{yyyy-MM-dd HH:mm:ss}[%c:%L]-[%p]%m%n
JDK7.0以上的版本:
import java.io.File;
import java.io.IOException;
import org.apache.log4j.DailyRollingFileAppender;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;
public class myLog4jWriter extends DailyRollingFileAppender{
@Override
Public synchronized void setFile(String fileName,boolean append,boolean bufferedIO,int bufferSize)throws IOException { super.setFile(fileName,append,bufferedIO,bufferSize);
File f =new File(fileName);
Set<PosixFilePermission> set =new HashSet<PosixFilePermission>();
//设置所有者权限
set.add(PosixFilePermission.OWNER_READ);
set.add(PosixFilePermission.OWNER_WRITE);
set.add(PosixFilePermission.OWNER_EXECUTE);
//设置同组⽤户权限
dnf卡屏怎么解决set.add(PosixFilePermission.GROUP_READ);
set.add(PosixFilePermission.GROUP_EXECUTE);祝福爸爸的话
//设置其他⽤户权限
set.add(PosixFilePermission.OTHERS_READ);
set.add(PosixFilePermission.OTHERS_EXECUTE);
ists()){
Files.Path(),set);
折叠钥匙改装}
}
}
企业执照注册JDK7.0以下版本:
import java.io.File;
import java.io.IOException;
import org.apache.log4j.DailyRollingFileAppender;
英文游戏名字大全public class myLog4jWriter extends DailyRollingFileAppender{
@Override
Public synchronized void setFile(String fileName,boolean append,boolean bufferedIO,int bufferSize)throws IOException { super.setFile(fileName,append,bufferedIO,bufferSize);
File file =new File(fileName);
//为所有⽤户增加可读权限
file.setReadable(true,false);
//为所有⽤户增加可执⾏权限
四字词语解释file.setExecutable(true,false);
}
}
启动项⽬即可
⽣成的⽇志⽂件读写权限为rwxr-xr-x(755)
附录:
File类中的设置权限的⽅法:
Public boolean setReadable(boolean readable):设置⽂件的所有者的可读权限。参数readable 为true时表⽰设置⽂件所有者有⽂件的可读权限,为false则⽆可读权限
Public boolean setReadable(boolean readable,boolean ownerOnly): 设置⽂件所有者或每个⼈的执⾏权限。参数readable 为true时表⽰允许⽂件的可读权限,为false则⽆可读权限;参数ownerOnly为true时表⽰设置可读权限只对⽂件所有者⽣效,为false时表⽰可读权限适⽤于每个⽤户。返回值返回true表⽰⽅法执⾏成功,false表⽰⽅法执⾏失败。
setWriteable(boolean writeable)、setWriteable(boolean writeable,boolean ownerOnly) ⽤法同上
setExecutalbe(boolean executalbe)、setExecutalbe(boolean executalbe,boolean ownerOnly) ⽤法同上
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论