我為你狂
          為你而瘋狂
          posts - 29,comments - 9,trackbacks - 0

          ??? 不同的服務器對于使用 log4j 是有些不同的,實際使用中主要是用 tomcat jboss 兩類,對于 tomcat, 它本身是沒有配置 log4j 的,所以使用起來和常規的一樣;而在 jboss 中它是本身配置了 log4j 的,所以有時候在看項目代碼時,其整個項目并沒有 log4j 的配置文件,而在一些類中仍然定義了 Logger, 例如 static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class); ,這就表明開發者打算使用 jboss 默認的 log4j 的配置,我們可以在 jboss 下的對應的 log 目錄下的 server.log 中看到日志, jboss 本身的 log4j 的配置是將 debug,info 級的日志寫在 server.log 中,而像 error 等級別比較高的日志打印到控制臺上,而寫到 server.log 中的日志比較多,并不方便查看。于是我們想到使用自己的 log4j 配置寫到某個具體的文件中(注意文件要先建立,才能忘里面寫東西, log4j 自己不能建立文件),但這里因為 jboss 有它自己的 log4j 配置,所以如果我們配置的 log4j 包含 Console Appender 時,就會出錯,錯誤類似于 ERROR: invalid console appender config detected, console stream is looping.
          解決方法一是不用 Console Appender, 或者改 jboss 的配置文件,在 jboss-service.xml 文件里 ,
          <mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging">
          ????????<attribute name="ConfigurationURL">resource:log4j.xml</attribute>
          ????????<attribute name="CatchSystemOut">false</attribute>
          ????????<attribute name="Log4jQuietMode">true</attribute>
          </mbean>

          我建議不用 Console Appender ,當然這是對 jboss3.2.x 是這樣,對于 jboss4.0.x 如果我們要用自己的 log4j 配置照上述改還是會有問題,會有類似于 log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable 的異常,解決方法是把 /server/default/jbossweb-tomcat55.sar/META-INF/jboss-service.xml 中的以下兩個熟悉改成 true
          <attribute name="Java2ClassLoadingCompliance">true</attribute>
          <attribute name="UseJBossWebLoader">true</attribute>

          以上就是使用 jboss 服務器可能出現的問題,解決了這些再來使用 log4j 就比較簡單了。
          posted on 2007-03-07 21:35 小虎(年輕) 閱讀(2497) 評論(0)  編輯  收藏 所屬分類: STRUTS
          主站蜘蛛池模板: 梁平县| 岳西县| 兴业县| 望城县| 呈贡县| 昌图县| 张家界市| 九台市| 个旧市| 同仁县| 新乐市| 潜山县| 鹿邑县| 洛扎县| 绥滨县| 宁波市| 横峰县| 浦东新区| 泰兴市| 出国| 迁西县| 延安市| 巴东县| 南昌县| 门源| 唐河县| 河曲县| 景泰县| 偏关县| 六安市| 大埔区| 永定县| 兴安县| 金寨县| 龙山县| 丹巴县| 甘泉县| 清水县| 金塔县| 临沧市| 堆龙德庆县|