Java 如何使用Logback登录到同一类中的两个不同文件?

Java 如何使用Logback登录到同一类中的两个不同文件?,java,slf4j,logback,Java,Slf4j,Logback,我们的Java应用程序在Logback之上使用SLF4J来记录错误消息。在logback.xml中,我们为错误日志定义了一个appender,以及一个指定包层次结构顶层的记录器 我们正在将功能添加到另一个日志文件的日志数据中。我创建了一个类来处理这个日志记录,并向logback.xml添加了一个新的appender和一个新的记录器。新记录器指定我创建的新类的完全限定包名以及additivity=false,这样在调用SLF4J记录器时,只有特定类才会写入新日志文件 然后我意识到,如果新类由于任何

我们的Java应用程序在Logback之上使用SLF4J来记录错误消息。在logback.xml中,我们为错误日志定义了一个appender,以及一个指定包层次结构顶层的记录器

我们正在将功能添加到另一个日志文件的日志数据中。我创建了一个类来处理这个日志记录,并向logback.xml添加了一个新的appender和一个新的记录器。新记录器指定我创建的新类的完全限定包名以及additivity=false,这样在调用SLF4J记录器时,只有特定类才会写入新日志文件


然后我意识到,如果新类由于任何原因无法写入新的日志文件,我应该让它在原始的错误日志文件中记录一条错误消息。但是,当SLF4J记录器写入新日志文件时,该类如何写入原始错误日志文件?该类是否有办法获得原始错误日志文件记录器的句柄?

使新类具有两个记录器可能最简单:一个是它自己的记录器,另一个是用于记录错误的记录器。不禁止一个类同时使用两个记录器,但用于不同的目的:

public class NewClass {
    private static final Logger logger = LoggerFactory.getLogger(NewClass.class);
    private static final Logger errorLogger = LoggerFactory.getLogger(ErrorHandlingClass.class);

    public void respond() {
        logger.info("info file");
        try {
            doSomething();
        } catch (Exception e) {
            errorLogger.error("error doing something", e);
        }
    }
但是,如果您使用SLF4J logger写入新日志文件,我认为您无法检测到写入失败