Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在weblogic 9/10中使用log4j日志_Java_Logging_Log4j_Weblogic - Fatal编程技术网

Java 在weblogic 9/10中使用log4j日志

Java 在weblogic 9/10中使用log4j日志,java,logging,log4j,weblogic,Java,Logging,Log4j,Weblogic,在weblogic中,我可以在控制台中为Serverlog配置使用log4j而不是默认的JDK日志记录 但是,serverlog没有使用log4j.properties文件,而是使用config.xml中的配置 即使log4j.properties文件位于类路径中,并且我设置了以下属性: set JAVA_OPTIONS=%JAVA_OPTIONS% -Dlog4j.configuration=file:<path>/log4j.properties set JAVA_OPTIONS

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

但是,serverlog没有使用log4j.properties文件,而是使用config.xml中的配置 即使log4j.properties文件位于类路径中,并且我设置了以下属性:

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 
set JAVA_OPTIONS=%JAVA_OPTIONS%-Dlog4j.configuration=文件:/log4j.properties
设置JAVA_选项=%JAVA_选项%-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
设置JAVA\u选项=%JAVA\u选项%-Dweblogic.log.Log4jLoggingEnabled=true

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

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

您在哪里设置上述选项?请尝试将-Dlog4j选项放在每个将使用log4j而不是默认Java日志记录的托管服务器的服务器启动选项中:

* When you start the Administration Server, include the following Java option in the weblogic.Server command:

  -Dweblogic.log.Log4jLoggingEnabled=true 

From:

我对WebLogic没有任何特别的了解,但是添加
-Dlog4j.debug
将导致log4j告诉您它在哪里查找它的配置。我以前在tomcat中跟踪日志记录问题时发现这是非常宝贵的


查看文档,了解log4j配置过程的详细信息。

我从来没有按照预期工作过

我最终做的是创造一些工作。 我注册了一个侦听Weblogic服务器日志的处理程序。 从这个处理程序中,我自己记录到log4j。日志可以重定向到我想做的任何事情

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

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
                  }
然后创建一个applicationLifeCycleStener。 使用启动后方法:

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);
    }


}

这是行不通的。使用所描述的java选项,应用程序已经使用log4j.properties配置正确地进行了日志记录,但我想要的是配置BEA服务器日志记录。显然,bea服务器日志并没有查看类路径中的log4j.xml。我看到我部署的自定义代码正在使用log4.properties,但Serverlog没有使用它(而且因为Serverlog的Aqualogic日志没有使用log4j.properties配置),我已经尝试过了,甚至在问题中记录了这一点。(第三个java选项)。这包含在我的管理服务器的java选项中,但没有达到我想要的效果。是否更改了config.xml中的设置?config.xml是根据控制台中所做的更改而更改的。看起来config.xml设置推翻了log4j.properties设置,因此日志记录是在config.xml中配置的,我不知道如何将其更改为log4j.properties configuration.whare应该添加-Dlog4j.debug?应该将
-Dlog4j.debug
选项添加到java的命令行参数中。对于WebLogic,它位于Servers//Server Start/Arguments中。