簡體   English   中英

jboss7問題的log4j配置

[英]log4j configuration with jboss7 issue

Java代碼

 public static synchronized void init(String log4jXMLPath) //throws ServletException
   {
      try
      {
         if (!initialized) // set the global RepositorySelector
         {
            defaultRepository = LogManager.getLoggerRepository();
            RepositorySelector theSelector = new AppRepositorySelector();
            **LogManager.setRepositorySelector(theSelector, guard);**
            initialized = true;
         }
         Hierarchy hierarchy = new Hierarchy(new RootLogger(Level.DEBUG));
         //loadLog4JConfig(servletContext, hierarchy);
         loadLog4JConfig(hierarchy, log4jXMLPath);
         ClassLoader loader = Thread.currentThread().getContextClassLoader();
         repositories.put(loader, hierarchy);
      }
      catch (Exception e)
      {

         e.printStackTrace();
      }
   }

LogManager.setRepositorySelector(theSelector,guard); Java代碼中的這一行拋出錯誤

堆棧跟蹤

18:17:11,189 ERROR [stderr] (MSC service thread 1-2) java.lang.IllegalArgumentException: Attempted to reset the LoggerFactory without possessing the guard.
18:17:11,190 ERROR [stderr] (MSC service thread 1-2)   at org.apache.log4j.LogManager.setRepositorySelector(LogManager.java:164)
18:17:11,191 ERROR [stderr] (MSC service thread 1-2)   at com.mportal.logger.api.AppRepositorySelector.init(AppRepositorySelector.java:73)
18:17:11,192 ERROR [stderr] (MSC service thread 1-2)   at com.mportal.logger.api.MPLoggerImpl.loadLogInstance(MPLoggerImpl.java:64)
18:17:11,192 ERROR [stderr] (MSC service thread 1-2)   at com.mportal.logger.api.MPLoggerImpl.<init>(MPLoggerImpl.java:38)
18:17:11,192 ERROR [stderr] (MSC service thread 1-2)   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
18:17:11,193 ERROR [stderr] (MSC service thread 1-2)   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
18:17:11,194 ERROR [stderr] (MSC service thread 1-2)   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
18:17:11,194 ERROR [stderr] (MSC service thread 1-2)   at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

如何解決這個問題? 請給出解決方案。

LogManager.setRepositorySelector(theSelector, guard);

您只能使用一個防護,使用不同的防護對象將導致觀察到的錯誤:

java.lang.IllegalArgumentException: Attempted to reset the LoggerFactory without possessing the guard.

應該可以將null作為參數傳遞給函數。 或者只是持有對初始防空洞的參考。

該文檔指出:

最初,警衛為空。 如果guard為null,則調用此方法將設置記錄器工廠和guard。 除非先前設置的防護作為第二個參數傳遞,否則后續調用將引發IllegalArgumentException。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM