如何更改Weblogic 10/11的日志格式?

时间:2010-01-21 20:38:30

标签: log4j weblogic weblogic11g

我想更改Weblogic服务器日志的日志格式。现在它正在使用其默认格式生成日志 - 我希望能够指定自己的格式。

例如,它会生成如下所示的日志:

####<Jan 21, 2010 3:24:24 PM EST> <Info> <Socket> <FS2LOANER-00981> <DPSCoreServer1> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1264105464314> <BEA-000436> <Allocating 2 reader threads.> 
####<Jan 21, 2010 3:24:24 PM EST> <Info> <Socket> <FS2LOANER-00981> <DPSCoreServer1> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1264105464314> <BEA-000446> <Native IO Enabled.> 

我试图通过让Weblogic使用LOG4J作为其日志记录系统并使用我的log4j.properties文件来定义我想要的日志格式来修改日志格式。但是,无论我尝试什么,weblogic都不会获取我的log4j.property文件设置并继续以其所需的格式登录。

这实际上是一个非常类似于以下帖子的问题,但这个问题从来没有真正得到解答(批准的答案是关于如何打开log4j调试,这没有帮助我弄清楚为什么weblogic没有拿起我的log4j.properties文件)。 Using log4j logging in weblogic 9/10

5 个答案:

答案 0 :(得分:2)

创建域启动类,如下所示:

import org.apache.log4j.PatternLayout;

import weblogic.logging.LoggerNotAvailableException;
import weblogic.logging.log4j.Log4jLoggingHelper;

public class LoggingConfigurator {
    public static void main(String[] args) {
        try {
            System.out.println("Configuring Log4j pattern");
            Log4jLoggingHelper.getLog4jServerLogger().getAppender("WLLog4jRotatingFileAppender")
                    .setLayout(new PatternLayout("%d{ISO8601} %-5p [%c] - %m%n"));
        } catch (LoggerNotAvailableException e) {
            e.printStackTrace();
        }
    }
}

暗嫩

答案 1 :(得分:1)

据我所知,您不能(也不是,您不想)更改WebLogic Server自己的Log Message Format(如果出现问题,支持人员将非常乐意获得所需的信息)。

但您可以将WebLogic配置为使用Log4j(请参阅How to Use Log4j with WebLogic Logging Services),并且在启用Log4j时,您可以获取对服务器正在使用的org.apache.log4j.Logger的引用并附加您自己的appender。 / p>

  

启用Log4j后,您将获得一个   参考   org.apache.log4j.Logger那个   服务器正在使用   weblogic.logging.log4j.Log4jLoggingHelper   类。

     

使用Log4j Logger参考,您可以   将您自己的自定义附加程序附加到   接收服务器日志事件;对于   例如,您可以附加一个appender   将服务器日志事件发送到   Syslog或Windows事件查看器。   此外,您可以使用记录器   发出日志请求的引用   WebLogic日志服务;这个   需要Log4j库   可供部署使用   应用

但这不是WebLogic自己的日志的替代品。

答案 2 :(得分:0)

我不想替换WebLogic的记录器,但我确实非常希望配置日志格式。 Amnon发布的方法效果很好(所以我不确定你为什么说你不能改变格式);我想要一些额外的细节。

关于我使用该方法看到的唯一不利之处是,如果您将StdOut / StdErr重定向到日志记录子系统,它会在日志中显示%c转换字符的空值;如果我不改变布局模式,那么我会看到而不是。

那个是我想看到的原始模式布局字符串,所以我可以进行更改并保留在日志文件中。

答案 3 :(得分:0)

到目前为止的帖子没有回答原始问题,这就是为什么WebLogic没有选择log4j.properties文件中配置的所需日志格式的原因。

听起来您使用WL的服务器日志记录桥将应用程序的log4j消息重定向到WL服务器的日志记录服务?如果这个假设是正确的,那么从Configuring Log Files and Filtering Log Messages for Oracle WebLogic Server开始,你需要在WL服务器的启动命令中传递一个参数,以加载正确的log4j配置,

-Djava.util.logging.config.file = / [路径] /log4j.properties

Cleaner在你启动WL时只传递这个JVM选项,不过你也可以像上一篇文章那样以编程方式实现它。

答案 4 :(得分:0)

Weblogic没有拿起你的log4j.properties,因为它不知道有一个。

您需要转到服务器的类路径并将路径附加到属性文件,保存更改并重新启动服务器。应该这样做。