代码之家  ›  专栏  ›  技术社区  ›  Edwin

在weblogic 9/10中使用log4j日志

  •  5
  • Edwin  · 技术社区  · 17 年前

    在weblogic中,我可以在控制台中为Serverlog配置使用log4j而不是默认的JDK日志记录。

    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dlog4j.configuration=file:<path>/log4j.properties
    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger   
    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.log.Log4jLoggingEnabled=true 
    

    是否可以将log4j.properties配置用于Weblogic服务器日志记录,或者只能使用java代码更改log4j配置?

    5 回复  |  直到 17 年前
        1
  •  6
  •   Dominic Mitchell    17 年前

    我对WebLogic一无所知,但添加 -Dlog4j.debug

    PropertyConfigurator DOMConfigurator 有关log4j配置过程的详细信息。

        2
  •  0
  •   duffymo    17 年前

    如果您将log4j.xml放在类路径中,WebLogic将获取它。我在WebLogic中使用ApacheCommons日志和log4j,这很容易做到。不需要那些Java选项。

        3
  •  0
  •   awithrow    17 年前

        4
  •  0
  •   jon077    17 年前

    要指定日志记录到Log4j记录器而不是默认的Java日志记录,请执行以下操作:

    * When you start the Administration Server, include the following Java option in the weblogic.Server command:
    
      -Dweblogic.log.Log4jLoggingEnabled=true 
    

    发件人: http://edocs.bea.com/wls/docs103/logging/config_logs.html#wp1014610

        5
  •  0
  •   Edwin    16 年前

    我最终做的是创造一些工作。 我注册了一个侦听Weblogic服务器日志的处理程序。

    创建自定义日志处理程序:

    public class CustomLogHandler extends Handler {
    ..
    
        public CustomLogHandler () throws SecurityException, IOException,
                NamingException {
    
            String log4jConfig = LogFilterConfiguration.getLog4jDirectory();
            classlogger.info("log4j configured for file"+ log4jConfig );
            PropertyConfigurator.configure(log4jConfig);
            logFilterConfiguration = new LogFilterConfiguration();
        }
    
        public void publish(LogRecord record) {
            WLLogRecord rec = (WLLogRecord) record;
            if (!isLoggable(rec))
                return;
            if (getLoggerName().. is something i want to log) {
                            // do my own log4j logging
                      }
    

    使用启动后方法:

    public void postStart(ApplicationLifecycleEvent evt) {
        Logger logger = LoggingHelper.getServerLogger();
        Handler oldHandler = null;
        Handler[] currentHandlers = logger.getHandlers();
    
                  .. code to remove an old custom handler if exists...
        with something like logger.removeHandler(oldHandler);
    
        // add custom handler to serverlogger.
        CustomLogHandler h = null;      
        try {
            h = new CustomLogHandler ();
            // If handler was removed we can add a new version.
            if (!(unRemovedHandlerClasses.contains(h.getClass()))){
                logger.addHandler(h);
                registerMBean(h) ;
            }
        } catch (Exception nmex) {
        classLogger.error("Error adding CustomLogHandler to serverlogger "
                    + nmex.getMessage());
            logger.removeHandler(h);
        }
    
    
    }
    
    推荐文章