log4j日誌文件保存路徑的設置

 一直都是把log4j的日誌文件位置設定成絕對路徑,直到今天發現了一個更好的設置方法, 不論絕對路徑還是相對webroot的路徑都可以。。。

 

log4j的通常用法就是通過在其配置文件(xml或properties)中直接將輸出文件寫死,在很多情況下,這樣做是非常簡單而又有效的。但這樣做的缺點是,如果想讓這個web應用運行起來,必須要修改log4j的配置文件。比如struts2.x中log4j的配置,每個人都得按照自己的路徑進行配置。這無疑增加了配置的複雜性。因此,在某些情況下,我們更希望日誌文件默認就輸出到web應用的某個目錄裏,比如如果想輸出日誌到webroot/logs/log.log中,這該如何實現呢?

    在配置文件中(我是在properties文件中使用的,xml我未測試,理論上一樣)使用${user.dir}類似的方式,這裏變量必須是System.getPropertities裏的變量。而我們則就是要利用這一點。首先在一個Listener裏或高優先級、自啓動的Servlet裏獲得應用的發佈目錄,這是很容易得到的,比如String home = servletContext.getRealPath("/");然後調用System.setPropertity("web_home",home),“web_home”名字可以隨意。則log4j.properties裏的配置爲:log4j.appender.TRACE.File=${web_home}/logs/log.log.則日誌會輸出到web應用發佈目錄裏的logs目錄裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章