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.file=com.myproj.common.myLog4jWriter
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以上的版本:
com.myproj.common.myLog4jWriter.java 代码

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{@OverridePublic 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);//设置同组用户权限set.add(PosixFilePermission.GROUP_READ);set.add(PosixFilePermission.GROUP_EXECUTE);//设置其他用户权限set.add(PosixFilePermission.OTHERS_READ);set.add(PosixFilePermission.OTHERS_EXECUTE);if(f.exists()){Files.setPosixFilePermissions(f.toPath(),set);}}
}

JDK7.0以下版本:
com.myproj.common.myLog4jWriter.java 代码

import java.io.File;
import java.io.IOException;
import org.apache.log4j.DailyRollingFileAppender;public class myLog4jWriter extends DailyRollingFileAppender{@OverridePublic 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) 用法同上


解决log4j生成的log日志文件读写权限问题相关推荐

  1. log4j每天/每小时/每分钟生成多个日志文件

    1 生成多个日志文件 每天生成一个日志文件的log4j.properties配置为 log4j.rootLogger=INFO,console,file # ALL TRACE DEBUG INFO ...

  2. log4j.properties配置与将异常输出到Log日志文件实例

    将异常输出到 log日志文件 实际项目中的使用: <dependencies><dependency><groupId>org.slf4j</groupId& ...

  3. 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

    解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 参考文章: (1)解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 (2)http ...

  4. JNI调用本地库时JAVA虚拟机异常退出问题定位,通过虚拟机生成的hs_err_pidxxx.log日志文件定位过程...

    JAVA代码中有一处需要通过JNI调用本地的DLL库,每次一到这里整个程序就直接闪退,程序目录下有生成的虚拟机日志文件hs_err_pidxxx.log,相同的程序运行在别的机器上都没有问题,刚开始无 ...

  5. Android中对Log日志文件的分析

    Android中对Log日志文件的分析 如何分析和研究Log文件 ,如何看日志信息 Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没 ...

  6. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式

    为什么80%的码农都做不了架构师?>>>    Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题 ...

  7. 如何设置WebLogic生成的日志文件的权限?

    在运维的过程中,有时我们需要以有别于启动WebLogic的用户去访问或收集日志等信息,以及时了解系统运行情况,这就要求日志文件的访问权限是允许其他用户访问的.一般情况下,新生成的文件默认权限是根据操作 ...

  8. log4j每天产生一日志文件

    #控制台#打印控制台日志log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender#输出HQL及参数到控制台#log4j.appender.CONS ...

  9. linux清理日志 hack,Linux系统的LOG日志文件及入侵后日志的清除

    UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX /var/adm - ...

最新文章

  1. SD认证考题分布和复习要点(转摘)
  2. java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.init(L
  3. PYTHON * 和**的用法
  4. python爬虫什么书好_初学python爬虫看什么书
  5. 省二计算机二级vb程序设计题,江苏省计算机二级考试VB程序设计复习题(分类汇总)...
  6. Leet Code OJ 388. Longest Absolute File Path [Difficulty: Medium]
  7. C语言 time函数 开销,C语言: 函数调用的开销
  8. c语言 typedef_C Typedef-能力倾向问题与解答
  9. 改变自己------每天进步一点点
  10. Flowable 数据库表结构 ACT_HI_COMMENT
  11. 牛逼!Python的判断、循环和各种表达式(长文系列第2篇
  12. 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2 1 4
  13. 项目管理学习总结(13)——高效能技术Leader的30条军规
  14. [已解决问题] Could not find class XXX referenced from method XXX.YYY
  15. c语言根据元素位置读取元素,jquery1.5.1中根据元素ID获取元素对象的代码
  16. csdn肿么了,这两天写的博文都是待审核
  17. CAN协议 J1939
  18. unity c# 触摸屏物体识别桌算法
  19. 《复仇者联盟4:终局之战》剧情
  20. 年底不要慌,这个EXCEL模板帮你打赢Q4收官战

热门文章

  1. 联想电脑拯救者y7000触摸屏失灵的修复方法
  2. 【论文笔记】D2A U-Net: Automatic segmentation of COVID-19 CT slices based on dual attention and hybrid di
  3. 解决Pytorch转onnx错误:Only tuples, lists and Variables are supported as JIT inputs/outputs!
  4. IDM高速下载器 快来白嫖~
  5. 论文的关键词应该如何选取?
  6. sqlite数据库存入的时候出现 unrecognized token: 错误
  7. 务实至上:“PHP之父”Rasmus Lerdorf访谈录
  8. xls和xlsx的区别
  9. 石墨文档(协同开发)
  10. 解决联想拯救者Y9000X触控板失灵问题