ESAPI记录器无法打印方法名称

时间:2014-09-03 06:04:02

标签: logging log4j esapi

我正在使用ESAPI logger和log4j.xml文件提供的记录器进行配置。我成功地能够打印日志消息(只是一个带有main方法的平面java程序)。以下是我的代码

import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Logger;

public class App {

    static private final Logger logger = ESAPI.getLogger(App.class.getName());

    public static void main(String[] args) {
        logger.error(Logger.SECURITY_FAILURE, "This is error in case of security failure");
    }
}

我的log4j.xml文件在下面给出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration threshold="null"
    xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <appender name="FILE_APPENDER" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="logs/sample.log" />
        <param name="Append" value="true" />
        <param name="Threshold" value="DEBUG" />
        <param name="MaxFileSize" value="5MB" />
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d,%-5p, %M, %m%n" />
        </layout>
    </appender>
    <root>
        <priority value="DEBUG" />
        <appender-ref ref="FILE_APPENDER" />
    </root>
</log4j:configuration>

我正在使用这些ESAPI.propertiesvalidation.properties

问题是%M(用于模式布局)不是打印正在写日志消息的方法的名称。 %M始终打印&#34; log&#34; (org.owasp.esapi.Logger中存在的方法)。如何在此处打印方法名称(在本例中为main)。我尝试从不同的方法编写日志仍然打印&#34; log&#34;不是方法名称。

1 个答案:

答案 0 :(得分:0)

这是ESAPI中的已知错误,我之前已将其报告为问题#268。一个修复是修改ESAPI源代码。

请参阅https://code.google.com/p/owasp-esapi-java/issues/detail?id=268