我试着按照这里的文档 Piping to Log4j using SLF4J , 但仍然无法使用正确的适配器。那么,如何在 Vaadin 8 应用程序中使用 Log4j
呢? pom.xml
需要添加哪些依赖?
最佳答案
要使日志正常工作,需要进行多项添加/更改。
沿着文档中提到的依赖添加:
- SLF4J
- jul-to-slf4j
- slf4j-log4j12-x.x.x.j
还应添加 log4j-core
。 pom.xml 的相关片段如下所示:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.29</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.29</version>
</dependency>
下一步是添加一个
log4j.properties
文件(在我的例子中是src/main/resources/log4j.properties
)。您可以在此处配置日志记录属性如文档中所述,应将
SLF4JBridgeHandler
添加到 Servlet 定义中(以防只有一个 servlet)
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
static {
SLF4JBridgeHandler.install();
}
}
- 用于
Logger
和LoggerFactory
的导入是:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
- 为了验证为记录器选择了正确的实现,它的简单名称被打印
System.out.println("Adapter name:"+ logger.getClass().getSimpleName());
。输出应该是:Log4jLoggerAdapter
注意:我使用的 log4-core
小于 2.9
,因为我使用的是 Java 8 和 jetty Error scanning entry ... .如果你的 jre > 8,你应该升级到更新的版本
关于java - 将 Log4j 日志记录添加到 Vaadin 8 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59158622/