紫風亂寫

          除了他眼前的屏幕,這個人什么也沒看見。
          被周圍的電腦簇擁著,他只知道他所創造的現實,但又意識到那是虛幻。
          他已經超越了技術。也超越了機器。
          posts - 62, comments - 93, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          log4j屬性動態設置

          Posted on 2005-12-26 21:21 Justfly Shi 閱讀(3577) 評論(0)  編輯  收藏 所屬分類: tips

          這兩天在修改代碼中的log4j的配置。
          log4j的配置有兩種,一種是按照屬性進行配置,一種是使用代碼進行配置。
          1、按照屬性進行配置
          按照屬性進行配置可以分為按照properties格式的進行配置,一種是按照XML格式的進行配置,后者沒有研究過,在此就不寫了。
          按照properties 的設置比較簡單。使用org.apache.log4j.PropertyConfigurator類就可以了
          最簡單的當時是如下所示的代碼了。

          PropertyConfigurator.configure(_log4jProperties);
          另外在這個類中還有別的方法也相當有用,如:
           static  public  void configureAndWatch(String configFilename)
          2、使用代碼進行配置
          這個比較羅嗦,不過可控制性比較高
          代碼示例如下:
          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、去掉原有的屬性配置
          在上面的兩種方面中只是會添加原有的配置。并不會刪除掉原先的配置項。
          可以使用LogManager.resetConfiguration();來刪除原有的配置。
          4、鎖定
          在執行配置代碼的時候,當有Logger在干活的時候怎么辦?
          比如在你去掉原有的配置項而還沒有來得及設置新的屬性的時候的時候
          這個時候Log4j的配置是空的,如果這個時候有一個Logger正在log的話是會出錯的。
          所以我們需要一個鎖,它可以讓你在進行配置的時候阻塞其它Logger的動作。
          這個鎖就是rootLogger。可以通過Logger.getRootLogger()獲取到。

          主站蜘蛛池模板: 宝山区| 依安县| 阿城市| 鄂伦春自治旗| 平乡县| 嘉鱼县| 扬州市| 舞阳县| 金乡县| 新蔡县| 高淳县| 海淀区| 四会市| 清河县| 洛川县| 溧阳市| 平顶山市| 隆林| 封丘县| 阿城市| 平原县| 永康市| 沐川县| 碌曲县| 乌兰察布市| 甘谷县| 鄂尔多斯市| 常德市| 康乐县| 镇安县| 镇原县| 保山市| 西安市| 思茅市| 达孜县| 焦作市| 勃利县| 平谷区| 西昌市| 广饶县| 新巴尔虎右旗|