关于log42j引起的日志文件权限的问题

背景介绍

咱们的生产环境下有一套TOMCAT下运行的程序,为了记录应用日志,通常都使用Log4j来完成tomcat

环境描述

通常咱们是这样设置,程序文件(包括TOMCAT自身)使用TOMCAT帐号做为属主运行,同时禁止了TOMCAT的BASH。登陆系统使用了统一认证,这样每一个人都有本身的帐号登陆系统。为了方便开发人员登陆查看日志,日志文件的文件权限为rw-r-r 同时也是系统默认的umask 因为TOMCAT和TOMCAT是本地帐号,操做人员使用了统一认证方式,理论上不属于TOMCAT组的帐号只用于READ权限查看便可。但诡异的事情发生了ide

现象描述

由于日志比较大,且实时输出,因此天天确定要作日志轮询。好比当天的日志为abc.log,那么昨天的日志就是abc-20180201.log 这个过程是log4j在凌晨自动切割的。测试

但诡异的是天天轮询,abc.log的文件权限变成了rw-r----- 既640权限,普通用户没有任何权限了。日志

-rw-r----- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-27.log
-rw-r----- 1 tomcat tomcat 1240070383 Jan 15 11:02 abc.log

开发人员不能检查应用日志,这是不行的code

排查过程

首先检查了目录的umask开发

[root@z00w00-host abc]# umask
0022

发现是正常的,接着检查了tomcat的umask,在/etc/profile也没有异常,同时想到tomcat不能登陆,因此这个地方的检查意义不大。it

随后和开发商议,将日志文件文件权限强行变动,临时恢复的正常io

-rw-r--r-- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-27.log
-rw-r--r-- 1 tomcat tomcat 1240070383 Jan 15 11:02 abc.log

可是次日,诡异的事情发生了class

-rw-r--r-- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-14.log
-rw-r----- 1 tomcat tomcat 5472401566 Jan 15 23:59 abc-2018-01-15.log
-rw-r----- 1 tomcat tomcat 1240070383 Jan 16 11:02 abc.log

abc.log文件和凌晨切割的文件abc-2018-01-15.log文件权限所有变回640,而强制修改的abc-2018-01-14.log文件属性没有改变,因为文件切割是由log42j控制,因此基本肯定是log4j搞的鬼。登录

协助开发查了一下log4j2在2.9版本以上有一个filePermissions,能够指定文件权限。遂通知开发修改了这个BUG

升级程序,重启测试后,问题解决

相关文章
相关标签/搜索