我想更改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
答案 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,因为它不知道有一个。
您需要转到服务器的类路径并将路径附加到属性文件,保存更改并重新启动服务器。应该这样做。