
今天在運作某程式時出現了如上圖所示的問題,查找資料後發現是由于由于log4j這個日志資訊列印子產品的配置資訊沒有給出造成的,簡單的說就是人家要有個地方來存放日志的列印資訊,可是你又不給人家,是以就報錯了吧
解決辦法:
在你的項目的src目錄中建立一個名為log4j.properties的文本檔案,記住是文本檔案,不是檔案夾
然後在你的文本檔案中加入如下的内容:
我去==沒成功 啥原因 繼續找
根據錯誤提示中的連結到Apache官網找日志資訊,然鵝(ಥ_ಥ)全是英文 不行 硬着頭皮也得把他弄懂了
其實也還蠻簡單的 大緻上就是說log4j的配置檔案沒有找到并且應用程式執行的時候沒有顯示配置,而log4j呢,是依靠Thread.getContextClassLoader().getResource() 這兩個類去定位檔案的預設資訊而不是直接去查他的檔案系統,而你要将log4j放在合适的位置就需要知道類裝入器(class loader大緻是這麼個理)的搜尋政策,log4j沒有提供一個預設的配置不管是輸入到控制台還是到檔案系統中,不過也可能在某些環境中被禁止。哔哔了半天,就是和文章開頭我言簡意赅的解釋一樣
并沒有解決問題,是以接着看:
簡單的說就是 log4j的類和屬性檔案不在同一個類加載器的範圍。
不簡單的說==就是 J2EE或servlet容器利用java的類加載系統,Sun改變了方法與java 2的釋出方式,在java類裝載器2,被安排在一個分層的parent-child關系,當一個子類的類加載器需要找到一個類或資源,它首先代表父類的要求。
log4j隻使用預設的類加載類forname()機制 結論就是:是以,如果你有問題,嘗試自己加載類或資源
看樣子Apache的log也沒幫到忙
最後在外網上找到一個回答:
将該方法插入到main函數中,可以自行列印日志資訊了
然後測試程式沒有問題:
------------------------------------------------------------------------------------
BUT 雖然日志資訊列印出來了 可是配置的問題其實還是沒有解決