Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Log4j - Fatal编程技术网

Java log4j:为同一文件设置不同的布局

Java log4j:为同一文件设置不同的布局,java,log4j,Java,Log4j,我需要一个日志文件,但是我想为这个文件指定两种不同的布局。我在某个地方读到,不建议声明两个写相同文件的appender,那么怎么办呢?提前感谢。这似乎是一件很奇怪的事情,因为通常您希望单个日志文件中的所有行都是相同的格式,这既便于查看,也便于以后对日志进行自动处理。但是,如果必须这样做,那么您不应该让两个不同的appender同时写入同一个文件,这是正确的 解决方案可能是实现一个定制的布局,它可以检查日志事件,然后委托给两个(或更多)其他布局中的一个来执行实际的格式化 public class

我需要一个日志文件,但是我想为这个文件指定两种不同的布局。我在某个地方读到,不建议声明两个写相同文件的appender,那么怎么办呢?提前感谢。

这似乎是一件很奇怪的事情,因为通常您希望单个日志文件中的所有行都是相同的格式,这既便于查看,也便于以后对日志进行自动处理。但是,如果必须这样做,那么您不应该让两个不同的appender同时写入同一个文件,这是正确的

解决方案可能是实现一个定制的
布局
,它可以检查日志事件,然后委托给两个(或更多)其他布局中的一个来执行实际的格式化

public class MultiLayout extends Layout {
  private Layout layout1;
  private Layout layout2;

  public MultiLayout() {
    layout1 = ....;
    layout1.activateOptions();
    layout2 = ....;
    layout2.activateOptions();
  }

  public boolean ignoresThrowable() {
    return layout1.ignoresThrowable();
  }

  public String format(LoggingEvent e) {
    // choose the appropriate layout, e.g. based on logger name
    if(e.getLoggerName().startsWith("com.example.")) {
      return layout1.format(e);
    } else {
      return layout2.format(e);
    }
  }

}

我的appender配置如下: