Java 如何生成名为log-{ClassThatInvokesLogger}-{Data}的日志?

Java 如何生成名为log-{ClassThatInvokesLogger}-{Data}的日志?,java,log4j,Java,Log4j,我需要设置日志文件名,比如log-{ClassThatInvokesLogger}-{Data}。是否可以在扩展的FileAppender中获取类名?本文介绍如何将时间戳数据添加到日志文件名中。但是如何从扩展自FileAppender的类中获取{ClassThatInvokesLogger} 该功能用于测试。我需要为每个测试创建一个新日志 this.getClass().getName() 将检索当前对象的类的名称。我已找到此问题的workeround。MyFileAppender类应具有以下

我需要设置日志文件名,比如
log-{ClassThatInvokesLogger}-{Data}
。是否可以在扩展的
FileAppender
中获取类名?本文介绍如何将时间戳数据添加到日志文件名中。但是如何从扩展自FileAppender的
类中获取
{ClassThatInvokesLogger}

该功能用于测试。我需要为每个测试创建一个新日志

this.getClass().getName()

将检索当前对象的类的名称。

我已找到此问题的workeround。MyFileAppender类应具有以下内容

String fileName=logFile.getName()+System.getProperty(“InvokingClassName”)

同时,调用logger的测试应该有如下内容

@BeforeClass
公共静态无效日志本地化(){
setProperty(“调用类名”、“MyInvokingClassName”);
logger=logger.getLogger(MyInvokingClassName.class);
}


在这种情况下,调用ClassName将是可访问的,并且可以在日志文件命名中使用。不过,可能有更好的解决方案

您确定这是个好主意吗?如果需要按类分析日志,可以轻松地将其拆分。如果有相当多的类做日志记录,那么几乎不可能检测到错误。我需要知道,哪个testcase不是通过打开日志创建日志的,而是通过日志文件名创建的。此功能是额外的,因为我们从每个测试用例中收集了一个日志,其中包含常规信息。新文件命名的逻辑在从FileAppender扩展而来的MyFileAppender类中实现。所以我需要在MyFileAppender类中获取LoggerInvokingClassName。此.getClass().getName()仅获取“MyFileAppender”。