關於log42j引發的日誌檔案許可權的問題

2021-09-21 21:17:54 字數 1580 閱讀 7496

我們的生產環境下有一套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

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

Log4J日誌檔案配置

log4j日誌檔案配置 一 日誌器配置 根日誌器 其他日誌器都繼承自這個日誌器 日誌的層次 log4j.logger.a info,a1 log4j.logger.a.b debug,a1,a2 則日誌器的繼承關係為 a.b繼承自a,a繼承自root logger,即發往a.b的info日誌,也會被...

Log4j日誌檔案亂碼

感謝!症狀 在預設語言非中文 或者說預設語言不支援中文的 的windows linux unix上,用log4j列印日誌,出現亂碼,常見的就是一堆問號。解決方法 1.log4j.properties為配置檔案,第2行為需要增加 2.log4j.xml為配置檔案,第2行為需要增加 log4j通過qui...

log4j記錄不同的日誌 Log4j 日誌記錄方法

logger類具有處理日誌記錄活動的方法。我們可以使用兩個靜態方法建立logger類的例項 public static logger getrootlogger public static logger getlogger string name 第乙個方法返回沒有名稱的根日誌記錄器。第二個方法按名...