获取给定包的SLF4J记录器



对于我当前的应用程序,我正在尝试获取给定包的记录器。然而,经过多次尝试,我仍然无法做到这一点。我将添加到目前为止我一直在尝试的示例代码块。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 
private final Logger logger;
private TestUtils(String thePackageOrLoggerName) {
ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory();
this.logger = iLoggerFactory.getLogger(thePackageOrLoggerName);
}

然而,我从上面的代码中得到的记录器不起作用。它具有我给出的包的name属性,但包中不包含任何记录器。在上面的例子中,我只基于SLF4J,而不基于Log4j2Logback,因为我希望这个实现独立于底层日志框架。

然而,在之前的尝试中,我可以完成我想做的事情,但我确实使用了logback-core库。我还将添加代码块,以便更好地理解我将要做的事情

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
private final Logger logger;
private testUtils(String thePackageOrLoggerName) {
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
this.logger = context.getLogger(thePackageOrLoggerName);
}

通过上面的实现,我的记录器包含给定包的所有记录器实例。我希望在不使用logback-core和仅使用SLF4J相关库的情况下实现相同的行为。有谁能给我一些见解,让我更进一步吗?非常感谢。

尝试使用lombok,并在类上方添加@Slf4j。现在你可以这样做:

LOGGER.info("Text");
LOGGER.getName();
LOGGER...{etc}

会让事情变得超级简单。你只需要在你想要一个记录器的任何类上面添加@Slf4j。它会帮你完成剩下的工作。

如果你只想要一个单一的记录器。您可以通过这种方式创建单个记录器类。只需创建方法来调用类中的记录器

@Slf4j
@NoArgsConstructor
@Component
public class TestLogger() {
public void logWarning(String warn){
LOGGER.warn(warn);
}
public void logError(String error){
LOGGER.error(error);
}
}

然后只需将这个类自动连接到你需要的每个区域

所有代码都未经测试,都是在此处提供的文本字段中编写的。

https://mvnrepository.com/artifact/org.projectlombok/lombok

最新更新