<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    內蒙古java團隊

    j2se,j2ee開發組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    log4j在項目中的配置。

    Posted on 2007-11-19 14:55 帥子 閱讀(1958) 評論(0)  編輯  收藏 所屬分類: j2se技術專區申請加入java團隊

    log4j是一個很好的開源的日志項目,下面就我在實際中使用的一些情況作一個小結(我所寫的是以spring為框架的運用,之所以要提到這點,是因為在spring中專門有處理log4j的地方,而我也用到了這些地方)。

     在使用的第一步你要明白你所發布的web項目所使用的服務器,因為不同的服務器對于使用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就比較簡單了。

    下面說說對于采用了spring框架的項目如何使用log4j,在spring中使用log4j,有些方便的地方,

    1. 動態的改變記錄級別和策略,即修改log4j.properties,不需要重啟Web應用,這需要在web.xml中設置一下。
    2. 把log文件定在 /WEB-INF/logs/ 而不需要寫絕對路徑。
    3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。

    首先我們在web.xml中需要設定一下

    <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>WEB-INF/log4j.properties</param-value>
    </context-param>

    <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
    </context-param>

    <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener> 
    其中第二部分就是能夠動態修改log4j.properties的關鍵,容器會每60秒掃描log4j的配置文件 。
    對于log4j的配置文件如何寫,這就不多說了,大家可以去google,有一點就是我們如果用RollingFileAppender或者FileAppender時,可以通過${webapp.root}來定位到服務器的發布的該項目下,這是spring把web目錄的路徑壓入到了webapp.root的系統變量。然后,在log4j.properties 里就可以這樣定義logfile位置
    log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
    如果有多個web應用,怕webapp.root變量重復,可以在context-param里定義webAppRootKey。

    當我們定義完log4j.properties后,剩下的就是在需要記錄的class中new 出Logger了


    主站蜘蛛池模板: 亚洲精品自在线拍| 亚洲一区二区三区四区在线观看| 亚洲宅男精品一区在线观看| 日韩精品久久久久久免费| 亚洲精品无码永久在线观看你懂的| 国产免费区在线观看十分钟 | 亚洲一级特黄大片无码毛片 | 久久精品国产亚洲αv忘忧草| 亚洲精品综合一二三区在线 | 在线观看免费视频一区| 国产亚洲情侣一区二区无码AV| 国产免费福利体检区久久| 久久亚洲精品成人综合| 99re6在线视频精品免费下载| 亚洲人成影院午夜网站| 成人免费无码大片a毛片| 亚洲av无码一区二区三区人妖| 免费a级毛片18以上观看精品| 全部一级一级毛片免费看| 亚洲一区精品伊人久久伊人| 西西人体免费视频| 99久久亚洲综合精品成人网| 四虎成人免费影院网址| 美女视频黄a视频全免费网站一区| 亚洲av无码乱码在线观看野外 | 亚洲丰满熟女一区二区v| 日本无吗免费一二区| 一级做a爰片久久毛片免费陪 | 亚洲日韩一中文字暮| 亚洲?v无码国产在丝袜线观看| www免费黄色网| 亚洲男女性高爱潮网站| 国产免费131美女视频| 精精国产www视频在线观看免费| 亚洲精品免费视频| 香蕉视频在线观看免费国产婷婷 | 七次郎成人免费线路视频| 久久精品国产亚洲av麻豆| 国产成在线观看免费视频| 免费无遮挡无码视频在线观看 | 亚洲视频在线观看|