Re: [問題] Log4j這個Library的設定問題
耶~ 死皮賴臉回 po... \囧/
※ 引述《feicsh.bbs@bbs.wretch.cc (飛)》之銘言:
: 你先搞懂啥是Log4j才來回答吧。
耶~ 我現在還是沒搞懂啥是 Log4j... \囧/
: 你的方法要是能work, 以後我倒轉來走路。
: 根本答非所問
在 PTT 這裡,大概自從溜鳥俠被記過處分之後
就沒有人把打賭這件事情當真了(不知道有沒有人來考據一下的 XD)
這件事情是我這個白爛痞子沒先 Test 就胡思亂想亂說話
(路人:喵的,又來一次...)
所以,在這裡跟原 po LittleBull、以及 feicsh 版友
還有有看我那篇文章的受害者道歉 [跪拜之 Orz]
不過呢... 在這件事情上頭,要知道真相是很容易的
Test 一下就 OK (路人:喵的,那你為啥不先 Test 再來 po 文 [翻桌])
只說我答非所問... 實在鞭屍鞭的不夠大力
而這樣子的文章,實在對收看 Java 版的觀眾,沒啥助益阿...
(路人:靠~ 也比散播不實謠言的死痞子好)
所以,這篇文章,就是幫各位受害者狠鞭我這個死痞子
這次真的都測試過啦,大家可以安心服用 \囧/
當然,如果還是有錯誤之處,還請各位狠批... [擺茶點]
(路人:不要讓這個死痞子活的太快樂阿... [群毆])
: ※ 引述《PsMonkey.bbs@ptt.cc (痞子軍團團長)》之銘言:
: > 耶~ 我沒有使用過... lalala
: > (而且,從來不知道 log4j 要 "安裝" XDXD)
: > 如果你前面說的沒有錯
: > 你試試看看在你的 jsp 檔案當中
: > java.io.File file = new File("");
: > System.out.println(file.getAbsolutePath());
: > 然後把你的 .properties 放在那個目錄底下... [茶]
: > 後面道理相同
之前之所以會這樣子想
是很天真的把 log4j 讀取 properties 檔案的方法
當作是單純的檔案讀取
所以才會這樣子亂開藥方 \囧/
我是不想看人倒立啦...(看正妹裸奔比較想... \囧/)
不過,既然被罵了,自己好歹也真的來測試一下
恩... 果真失敗... (路人:...... [群毆])
可是又不想要屈服(?)EXTASY 板友提供的方法,於是...
聽說 log4j 是 Open Source....
那還等什麼,衝原始碼阿...
這樣子可以不用搞懂 log4j 在幹麻,還是可以找到問題的源頭
logging-log4j-1.2.13.zip 裡頭就有附帶原始碼
匯入到 Eclipse 的 Project 當中,發現有一堆 Error...
(主要是沒有 JMS 的 library)
有問題的目錄通殺! 砍完之後,測試程式還是可以跑 \囧/
接著,從 Logger.getRootLogger() 開始 trace
於是,在快速往回找的策略下,我的 trace 路途是這樣子的...
Logger.getRootLogger()
↑
LogManager.getRootLogger()
↑
[@ LogManager.java]
repositorySelector.getLoggerRepository().getRootLogger()
↑
[@ LogManager.java]
Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG))
h.getRootLogger()
↑
[@ LogManager.java]
new RootLogger((Level) Level.DEBUG)
↑
RootLogger(String)
↑
Logger(String) //喵的,又回頭了是怎樣
//Design Pattern 沒學好,所以看不懂 XD
↑
Category(String)
看到 Category 的 constructor,覺得味道不太對
怎麼都沒扯到設定的事情...
於是一路回頭,到了 LogManager.java 當中
在 76 行會發現一個 static 的 block
裡頭除了
Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG));
repositorySelector = new DefaultRepositorySelector(h);
還有些別的
於是找了一下,發現關鍵點在 105 行(還有 122 行)
跳到 Loader.getResource(String) 一看....
原來是用 ClassLoader......
原來是用 ClassLoader......
原來是用 ClassLoader......
好了,於是真相大白了...
(路人:拜託,用 ClassLoader 才是比較像樣的做法好唄...
老師說要看王森大人的 Java 深度歷險
要看書! 要看書! 要看書! 結果你不聽
現在出包了才在這裡 trace code... )
惡補一下 ClassLoader 的相關說明之後... 耶~ 測試成功...
所以,以原 po 的需求,放在哪裡最好呢?
放在 {container}/webapps/{ap_name}/WEB-INF/classes 最妥當
報告完畢...
ps. 我還是不知道 log4j 是什麼東西... [飄走]
====
經過這次事件之後,如果還有人覺得我 Java 很強....
(是真的有人這樣子說我啦... >///<)
拜託,醒醒吧...
我一點也不強,我只是不害怕丟人現眼跟面對未知數... [逃]
--
侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw
眾目睽睽無心顫 個人版:telnet://legend.twbbs.org
煢居少聊常人事
殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.204.16.17
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章