作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] Log4j这个Library的设定问题
时间Sat Apr 8 04:15:35 2006
耶~ 死皮赖脸回 po... \囧/
※ 引述《[email protected] (飞)》之铭言:
: 你先搞懂啥是Log4j才来回答吧。
耶~ 我现在还是没搞懂啥是 Log4j... \囧/
: 你的方法要是能work, 以後我倒转来走路。
: 根本答非所问
在 PTT 这里,大概自从溜鸟侠被记过处分之後
就没有人把打赌这件事情当真了(不知道有没有人来考据一下的 XD)
这件事情是我这个白烂痞子没先 Test 就胡思乱想乱说话
(路人:喵的,又来一次...)
所以,在这里跟原 po LittleBull、以及 feicsh 版友
还有有看我那篇文章的受害者道歉 [跪拜之 Orz]
不过呢... 在这件事情上头,要知道真相是很容易的
Test 一下就 OK
(路人:喵的,那你为啥不先 Test 再来 po 文 [翻桌])
只说我答非所问... 实在鞭屍鞭的不够大力
而这样子的文章,实在对收看 Java 版的观众,没啥助益阿...
(路人:靠~ 也比散播不实谣言的死痞子好)
所以,这篇文章,就是帮各位受害者狠鞭我这个死痞子
这次真的都测试过啦,大家可以安心服用 \囧/
当然,如果还是有错误之处,还请各位狠批... [摆茶点]
(路人:不要让这个死痞子活的太快乐阿... [群殴])
: ※ 引述《[email protected] (痞子军团团长)》之铭言:
: > 耶~ 我没有使用过... 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