Log4j 以独立于平台的方式指定Websphere中的日志文件位置

Log4j 以独立于平台的方式指定Websphere中的日志文件位置,log4j,websphere,Log4j,Websphere,在Websphere 7.0上使用Log4JRollingFileAppender时,如何在Log4J.properties文件中指定日志目录的位置,即拾取Websphere的LOG\u ROOT变量?当然,编写RollingFileAppender的自定义子类非常简单,它通过编程以独立于平台的方式确定LOG_根变量值 如果那样的话,它可能只需要十几行代码。然后跟进, <appender name="CustomAppender" class="path.to.your.Custo

在Websphere 7.0上使用Log4J
RollingFileAppender
时,如何在Log4J.properties文件中指定日志目录的位置,即拾取Websphere的
LOG\u ROOT
变量?

当然,编写RollingFileAppender的自定义子类非常简单,它通过编程以独立于平台的方式确定LOG_根变量值

如果那样的话,它可能只需要十几行代码。然后跟进,

    <appender name="CustomAppender" class="path.to.your.CustomAppender">
            <param name="File" value="fileNameOnly.out" />
            <param name="Append" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%m%n" />
            </layout>
    </appender>

并让子类接受File参数,派生LOG_根路径,并在调用超类方法之前将其附加到文件名

我希望这在某种程度上有所帮助


-gMale

您可以选择指定可以使用WebSphere变量的JVM自定义属性

JVM自定义属性可以在log4j.properties中使用

以下是实现相同目标的一些说明:

在管理控制台中,路径为:

应用程序服务器>服务器名称>进程定义>Java虚拟机>自定义属性

Customer属性可以使用WebSphere变量作为自定义属性KeyForMyCustomProperty的值。WebSphere变量将使用标准模式:${}

例如${MY_VARIABLE}

log4j属性文件可以通过

log4j.appender.messageAppender.File=${KeyForMyCustomProperty}/Message.log

这种方法并不简单,但可以达到预期的效果。您可以选择使用与JVM自定义属性的WebSphere变量相同的键,然后就好像在log4j.properties中使用了WebSphere变量一样


Manglu

你是说log4j.appender.file.file=${LOG_ROOT}logs/log4j.LOG?@JoseK:很遗憾,这似乎不起作用。Websphere变量不能作为系统属性访问,据我所知,Log4J使用它来替换这些占位符。