紫風(fēng)亂寫(xiě)

          除了他眼前的屏幕,這個(gè)人什么也沒(méi)看見(jiàn)。
          被周?chē)碾娔X簇?fù)碇恢浪鶆?chuàng)造的現(xiàn)實(shí),但又意識(shí)到那是虛幻。
          他已經(jīng)超越了技術(shù)。也超越了機(jī)器。
          posts - 62, comments - 93, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          log4j屬性動(dòng)態(tài)設(shè)置

          Posted on 2005-12-26 21:21 Justfly Shi 閱讀(3580) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): tips

          這兩天在修改代碼中的log4j的配置。
          log4j的配置有兩種,一種是按照屬性進(jìn)行配置,一種是使用代碼進(jìn)行配置。
          1、按照屬性進(jìn)行配置
          按照屬性進(jìn)行配置可以分為按照properties格式的進(jìn)行配置,一種是按照XML格式的進(jìn)行配置,后者沒(méi)有研究過(guò),在此就不寫(xiě)了。
          按照properties 的設(shè)置比較簡(jiǎn)單。使用org.apache.log4j.PropertyConfigurator類(lèi)就可以了
          最簡(jiǎn)單的當(dāng)時(shí)是如下所示的代碼了。

          PropertyConfigurator.configure(_log4jProperties);
          另外在這個(gè)類(lèi)中還有別的方法也相當(dāng)有用,如:
           static  public  void configureAndWatch(String configFilename)
          2、使用代碼進(jìn)行配置
          這個(gè)比較羅嗦,不過(guò)可控制性比較高
          代碼示例如下:
          Layout layout = new PatternLayout(logPattern);
          RollingFileAppender fileAppendar 
          = new RollingFileAppender(layout,_fileName, true);
          fileAppendar.setMaximumFileSize(_fileSize 
          * 1024 * 1024);
          fileAppendar.setMaxBackupIndex(_fileNum);


          ConsoleAppender consoleAppendar 
          = new ConsoleAppender(layout, "System.out");
          consoleAppendar.setLayout(layout);

          Logger mainLogger 
          = Logger.getLogger("cn.justfly");
          mainLogger.setLevel(Level.toLevel(_logLevel, Level.INFO));
          mainLogger.addAppender(fileAppendar);
          mainLogger.addAppender(consoleAppendar);

          需要分別配置Layout、Appender和Logger
          然后把Layout配置給Appender,把Appender添加給Logger,于是乎就大功告成了。
          3、去掉原有的屬性配置
          在上面的兩種方面中只是會(huì)添加原有的配置。并不會(huì)刪除掉原先的配置項(xiàng)。
          可以使用LogManager.resetConfiguration();來(lái)刪除原有的配置。
          4、鎖定
          在執(zhí)行配置代碼的時(shí)候,當(dāng)有Logger在干活的時(shí)候怎么辦?
          比如在你去掉原有的配置項(xiàng)而還沒(méi)有來(lái)得及設(shè)置新的屬性的時(shí)候的時(shí)候
          這個(gè)時(shí)候Log4j的配置是空的,如果這個(gè)時(shí)候有一個(gè)Logger正在log的話是會(huì)出錯(cuò)的。
          所以我們需要一個(gè)鎖,它可以讓你在進(jìn)行配置的時(shí)候阻塞其它Logger的動(dòng)作。
          這個(gè)鎖就是rootLogger。可以通過(guò)Logger.getRootLogger()獲取到。

          主站蜘蛛池模板: 驻马店市| 富蕴县| 治多县| 河曲县| 惠东县| 马边| 兴化市| 铜川市| 体育| 和顺县| 陇西县| 盈江县| 宝鸡市| 剑河县| 寻乌县| 安陆市| 延寿县| 安多县| 金湖县| 宾川县| 泰兴市| 巴中市| 隆化县| 青神县| 汾阳市| 鄂州市| 白河县| 山西省| 丹江口市| 新巴尔虎右旗| 内丘县| 新干县| 高青县| 灵山县| 百色市| 武鸣县| 长泰县| 寿宁县| 高邮市| 股票| 黄平县|