0

我有 Linux 服务器,我在其上使用我的axis2 webservice 运行tomcat。

我对 Log4j 使用以下内容:xml 配置文件,它与我的 webservice java 文件位于同一目录中。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- Appenders -->
    <appender name="roll" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="file" value="~//..//tmp//CookTalesLog.log" />
                <param name="append" value="true" />
                <param name="encoding" value="UTF-8" />
                <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
                        <!-- The file to roll to, this is a fairly intelligent parameter, if the file
                        ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
                        default is yyyy-MM-dd, (rolls at midnight)
                        See: http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html -->
                        <param name="FileNamePattern" value="CookTalesLog.%d.log.gz" />
                </rollingPolicy>

                <layout class="org.apache.log4j.PatternLayout">
                        <!-- The log message pattern -->
                        <param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
                </layout>
    </appender>

    <root>
        <priority value="debug" />
        <appender-ref ref="roll" />
    </root>

</log4j:configuration>

在 java 代码中:我尝试使用以下每一行

private static final Logger sLogObj = Logger.getLogger( ICDBWebService.class );

private static final Log sLogObj = LogFactory.getLog(ICDBWebService.class);

也用过:

static
{
    DOMConfigurator.configure( "log4j.xml" );
}

对于日志记录:

    sLogObj.debug( "Login: email=" + email + " pwd= " + password );

未创建日志文件....

任何想法我做错了什么?

4

3 回答 3

2

双 '//' 可能是个问题。

-Dlog4j.debug=true您可以通过传递给 JVM 或在 Tomcat 上运行export TOMCAT_OPTS="-Dlog4j.debug=true以查看 Log4J 内部发生的情况来启用 Log4J 的内部调试输出。

于 2012-05-17T07:16:28.397 回答
0

您是否尝试过更简单的文件路径?而不是你现在在那里使用的波浪号和双斜杠,尝试使用类似的东西/tmp/CookTalesLog.log,看看是否有帮助。可能只是文件名没有正确扩展,因此无法创建。Tomcat 日志中是否有任何提示问题的内容?

于 2012-05-17T07:05:22.803 回答
0

使用以下内容在您的 java 代码中加载 xml 文件:

 DOMConfigurator.configureAndWatch("log4jConfigFile.xml");
 private static final Log log = LogFactory.getLog(ICDBWebService.class);
于 2012-05-17T08:28:35.443 回答