1. 程式人生 > >關於log42j引發的日誌文件權限的問題

關於log42j引發的日誌文件權限的問題

輸出 沒有 通用 屬於 profile 們的 切割 log4j2 解決

背景介紹

我們的生產環境下有一套TOMCAT下運行的程序,為了記錄應用日誌,一般都使用Log4j來完成

環境描述

一般我們是這樣設置,程序文件(包括TOMCAT自身)使用TOMCAT賬號作為屬主運行,同時禁止了TOMCAT的BASH。登錄系統使用了統一認證,這樣每個人都有自己的賬號登錄系統。為了方便開發人員登錄查看日誌,日誌文件的文件權限為rw-r-r 同時也是系統默認的umask 由於TOMCAT和TOMCAT是本地賬號,操作人員使用了統一認證方式,理論上不屬於TOMCAT組的賬號只用於READ權限查看即可。但詭異的事情發生了

現象描述

因為日誌比較大,且實時輸出,所以每天肯定要做日誌輪詢。比如當天的日誌為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

開發人員不能檢查應用日誌,這是不行的

排查過程

首先檢查了目錄的umask

[root@z00w00-host abc]# umask
0022

發現是正常的,接著檢查了tomcat的umask,在/etc/profile也沒有異常,同時想到tomcat不能登錄,所以這個地方的檢查意義不大。

隨後和開發商議,將日誌文件文件權限強行變更,臨時恢復的正常

-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

但是第二天,詭異的事情發生了

-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

升級程序,重啟測試後,問題解決

關於log42j引發的日誌文件權限的問題