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

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

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

    內(nèi)蒙古java團(tuán)隊(duì)

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

    log4j是一個(gè)很好的開源的日志項(xiàng)目,下面就我在實(shí)際中使用的一些情況作一個(gè)小結(jié)(我所寫的是以spring為框架的運(yùn)用,之所以要提到這點(diǎn),是因?yàn)樵趕pring中專門有處理log4j的地方,而我也用到了這些地方)。

     在使用的第一步你要明白你所發(fā)布的web項(xiàng)目所使用的服務(wù)器,因?yàn)椴煌姆?wù)器對(duì)于使用log4j是有些不同的,我在實(shí)際使用中主要是用tomcat和jboss兩類,對(duì)于tomcat,它本身是沒有配置log4j的,所以使用起來和常規(guī)的一樣;而在jboss中它是本身配置了log4j的,所以有時(shí)候我們?cè)诳错?xiàng)目代碼時(shí),其整個(gè)項(xiàng)目并沒有l(wèi)og4j的配置文件,而在一些類中仍然定義了Logger,例如static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class);,這就表明開發(fā)者打算使用jboss默認(rèn)的log4j的配置,我們可以在jboss下的對(duì)應(yīng)的log目錄下的server.log中看到日志,jboss本身的log4j的配置是將debug,info級(jí)的日志寫在server.log中,而像error等級(jí)別比較高的日志打印到控制臺(tái)上,而寫到server.log中的日志比較多,并不方便查看。于是我們想到使用自己的log4j配置寫到某個(gè)具體的文件中(注意文件要先建立,才能忘里面寫東西,log4j自己不能建立文件),但這里因?yàn)閖boss有它自己的log4j配置,所以如果我們配置的log4j包含Console的Appender時(shí),就會(huì)出錯(cuò),錯(cuò)誤類似于

    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,當(dāng)然這是對(duì)jboss3.2.x是這樣,對(duì)于jboss4.0.x如果我們要用自己的log4j配置照上述改還是會(huì)有問題,會(huì)有類似于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 中的以下兩個(gè)熟悉改成true
    <attribute name="Java2ClassLoadingCompliance">true</attribute>
    <attribute name="UseJBossWebLoader">true</attribute>

    以上就是使用jboss服務(wù)器可能出現(xiàn)的問題,解決了這些再來使用log4j就比較簡(jiǎn)單了。

    下面說說對(duì)于采用了spring框架的項(xiàng)目如何使用log4j,在spring中使用log4j,有些方便的地方,

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

    首先我們?cè)趙eb.xml中需要設(shè)定一下

    <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> 
    其中第二部分就是能夠動(dòng)態(tài)修改log4j.properties的關(guān)鍵,容器會(huì)每60秒掃描log4j的配置文件 。
    對(duì)于log4j的配置文件如何寫,這就不多說了,大家可以去google,有一點(diǎn)就是我們?nèi)绻肦ollingFileAppender或者FileAppender時(shí),可以通過${webapp.root}來定位到服務(wù)器的發(fā)布的該項(xiàng)目下,這是spring把web目錄的路徑壓入到了webapp.root的系統(tǒng)變量。然后,在log4j.properties 里就可以這樣定義logfile位置
    log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
    如果有多個(gè)web應(yīng)用,怕webapp.root變量重復(fù),可以在context-param里定義webAppRootKey。

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


    主站蜘蛛池模板: 亚洲成人福利在线| 成人性生交大片免费看好| 国产精品亚洲一区二区三区| 一级黄色片免费观看| 国产精彩免费视频| 国产亚洲人成A在线V网站| 亚洲中文字幕在线无码一区二区| 亚洲欧美国产日韩av野草社区| 青青操免费在线视频| 国产jizzjizz免费视频| 亚洲国产片在线观看| 最近免费中文字幕MV在线视频3| 亚洲熟妇无码AV在线播放| 无码天堂va亚洲va在线va| 日韩视频在线精品视频免费观看 | EEUSS影院WWW在线观看免费| 91热成人精品国产免费| 久久国产亚洲精品麻豆| 日日狠狠久久偷偷色综合免费| 野花高清在线观看免费完整版中文| 亚洲AV永久无码精品| 久久www免费人成精品香蕉| 免费永久在线观看黄网站| 丰满妇女做a级毛片免费观看| 国产a v无码专区亚洲av| 特黄特色大片免费| 日韩免费一级毛片| 亚洲天然素人无码专区| 亚洲三级高清免费| 日本亚洲中午字幕乱码| 亚洲情综合五月天| 97视频热人人精品免费| 日本免费精品一区二区三区| 国产成人免费网站在线观看 | 精品亚洲成a人片在线观看 | 深夜福利在线视频免费| 亚洲国产精品无码成人片久久| 四虎免费影院ww4164h| 精品一区二区三区无码免费直播| 亚洲伊人久久精品影院| 一二三四在线观看免费高清中文在线观看|