java - 将 Log4j 日志记录添加到 Vaadin 8 应用程序

标签 java vaadin vaadin8

我试着按照这里的文档 Piping to Log4j using SLF4J , 但仍然无法使用正确的适配器。那么,如何在 Vaadin 8 应用程序中使用 Log4j 呢? pom.xml需要添加哪些依赖?

最佳答案

要使日志正常工作,需要进行多项添加/更改。

  1. 沿着文档中提到的依赖添加:

    • 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>
  1. 下一步是添加一个 log4j.properties 文件(在我的例子中是 src/main/resources/log4j.properties)。您可以在此处配置日志记录属性

  2. 如文档中所述,应将 SLF4JBridgeHandler 添加到 Servlet 定义中(以防只有一个 servlet)

 @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
    @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
    public static class MyUIServlet extends VaadinServlet {
        static {
            SLF4JBridgeHandler.install();
        }
    }
  1. 用于 LoggerLoggerFactory 的导入是:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
  1. 为了验证为记录器选择了正确的实现,它的简单名称被打印 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/

相关文章:

java - 将 Loadrunner 文件参数转换为有效负载的 Java 字符串

vaadin - 如何在vaadin中更改表格的行颜色

java - 如何在 Vaadin 上使用 withConverter 方法防止 Binder 中出现 “null” 文本

java - Vaadin 8 `Binder::bindInstanceFields` 是否仅适用于 String 数据类型?

java - 如何使用流 API 根据条件对行进行排序

java - JTextArea位置,setBounds不起作用?

java - 突然出现空指针异常

css - 将 "Dialog"小部件的宽度设置为 Vaadin 14 中页面的百分比

mysql - Spring Boot 的数据源错误

Vaadin 8 网格多选模型获取事件行