2

我想更改 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文件)。在 weblogic 9/10 中使用 log4j 登录

4

5 回答 5

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

暗嫩

于 2010-12-02T13:42:04.020 回答
1

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

但是您可以将 WebLogic 配置为使用 Log4j(请参阅如何将 Log4j 与 WebLogic 日志服务一起使用),并且在启用 Log4j 时,您可以获得org.apache.log4j.Logger对服务器正在使用的引用并附加您自己的附加程序。

启用 Log4j 后,您会 org.apache.log4j.Logger从类中获得对服务器正在使用的 的引用weblogic.logging.log4j.Log4jLoggingHelper

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

但这并不能替代 WebLogic 自己的日志。

于 2010-01-26T14:41:17.240 回答
0

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

关于该方法我看到的唯一负面因素是,如果您将 StdOut/StdErr 重定向到日志子系统,它会在日志中显示为 %c 转换字符的空值;如果我不更改布局模式,那么我会看到 and 。

就是我想查看原始模式布局字符串的内容,因此我可以进行更改并保留在日志文件中。

于 2011-03-01T01:04:22.013 回答
0

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

在我看来,您正在使用 WL 的服务器日志桥将应用程序的 log4j 消息重定向到 WL 服务器的日志服务?如果这个假设是正确的,从为 Oracle WebLogic Server 配置日志文件和过滤日志消息,您需要在 WL 服务器的启动命令中传递一个参数,以加载正确的 log4j 配置,

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

Cleaner 只是在您启动 WL 时传递此 JVM 选项,但您也可以像上一篇文章中那样通过编程方式实现它。

于 2016-04-20T04:25:50.397 回答
0

Weblogic 没有获取您的 log4j.properties,因为它不知道有一个。

您需要转到服务器的类路径并将路径附加到属性文件,保存更改并重新启动服务器。它应该可以解决问题。

于 2016-05-06T10:42:29.080 回答