Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用具有自定义头的log4j创建日志?_Java_Logging_Log4j - Fatal编程技术网

Java 如何使用具有自定义头的log4j创建日志?

Java 如何使用具有自定义头的log4j创建日志?,java,logging,log4j,Java,Logging,Log4j,我正在使用具有以下格式的log4j创建日志文件: x、 x,x,x x、 x x、 x,x x 号码 号码 号码 号码 . . 为了放置标题,即包含这些x的前4行,我扩展了PatternLayout类并重写了getHeader()方法。 getHeader代码如下所示: @Override public String getHeader(){ return FIRST_LINE + SECOND_LINE + THIRD_LINE + FOURTH_LINE; } 我正在weblog

我正在使用具有以下格式的log4j创建日志文件: x、 x,x,x x、 x x、 x,x x 号码 号码 号码 号码 . .

为了放置标题,即包含这些x的前4行,我扩展了PatternLayout类并重写了getHeader()方法。 getHeader代码如下所示:

@Override
public String getHeader(){
    return FIRST_LINE + SECOND_LINE + THIRD_LINE + FOURTH_LINE;
}
我正在weblogic服务器上托管我的应用程序。 问题是,每当我重新启动服务器时,每次都会附加头。 另一个问题是,当我在重新启动后点击第一个请求时,会再次附加头,如下所示:

“重新启动后的标头” “第一个请求后的标头”


是否有人可以建议我如何解决这个问题或其他任何替代方案,以制作具有4个标题行和这些标题后的其他动态值的相同报告?

我终于找到了这个问题的解决方案。 我们将重写getHeader()方法,并仅在需要时返回标头。 我采用了以下方法:

  • 检查日志文件的第一行是否为空
  • 如果日志文件中没有第一行,那么我将从getHeader()方法返回头
  • 您可以使用以下代码来解决此问题:

     @Override
    public String getHeader () {
        try (BufferedReader br = new BufferedReader (new FileReader (fileName)) {
    
            String line = br.readLine ();
            if (line != null)
                return null;
    
        } catch (IOException e) {
            e.printStackTrace ();
        }
    
        return FIRST_LINE + SECOND_LINE + THIRD_LINE + FOURTH_LINE;
    }
    
    请注意,此代码将只检查文件的第一行,而不是完整的文件