【问题标题】:How direct all internal Springboot logging to log4j?如何将所有内部 Spring Boot 日志记录到 log4j?
【发布时间】:2015-03-11 16:26:11
【问题描述】:

我希望将所有内部 Springboot 日志消息定向到 log4j,以便消息遵循我的 log4j 属性(即它们使用我的布局进入控制台和我的 log4j 文件)。

我尝试根据本指南将 Springboot 配置为仅使用 log4j 日志记录:http://spring.io/blog/2009/12/04/logging-dependencies-in-spring/

我已成功设置 log4j 以在使用 log4j 记录器对象时记录到控制台和文件。

但是,Springboot 在内部登录时似乎仍在使用 slf4j。我尝试删除 slf4j 依赖项,但 Springboot 因缺少类异常而无法启动。

如何将所有内部 Springboot 日志记录定向到 log4j?

【问题讨论】:

    标签: spring log4j spring-boot


    【解决方案1】:

    您是否从官方文档中尝试过这个?

    http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/htmlsingle/#howto-configure-log4j-for-logging

    基本上,您必须排除默认情况下随 starter poms 提供的 logback 内容。

    在此引用以供参考:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
    </dependency>
    

    【讨论】:

    • 就是这样。谢谢。
    【解决方案2】:

    如果您使用的是 spring-boot,我建议您遵循spring documentation,我发现它比您的参考更容易。

    我有 log4j 工作,它打印如下消息:

    [2015-03-06 15:34:54 INFO ] [main] [tomcat.TomcatEmbeddedServletContainer] Tomcat initialized with port(s): 8080 (http)

    不确定这是否是您所说的内部消息。

    【讨论】:

      【解决方案3】:
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
        <version>1.1.4.RELEASE</version>
        <exclusions>
          <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <!-- add slf4j interfaces to classpath this is for log4j -->
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.4</version>
          <scope>compile</scope>
      </dependency>
      
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.6.4</version>
          <scope>runtime</scope>
      </dependency>
      
      <!-- add log4j to classpath -->
      <!-- does the logging -->
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.16</version>
      </dependency>
      

      在资源下添加log4j.properties

      log4j.rootLogger=INFO, Console, File
      
      # Direct log messages to stdout
      log4j.appender.Console=org.apache.log4j.ConsoleAppender
      log4j.appender.Console.Target=System.out
      log4j.appender.Console.layout=org.apache.log4j.PatternLayout
      log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %m%n
      
      
      log4j.appender.File=org.apache.log4j.RollingFileAppender
      log4j.appender.File.append=true
      log4j.appender.File.file=/tmp/projectdir/logfile-ws.log
      log4j.appender.File.threshold=INFO
      log4j.appender.File.layout=org.apache.log4j.PatternLayout
      log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %m%n
      log4j.appender.File.MaxFileSize=100MB
      log4j.appender.File.MaxBackupIndex=1
      

      【讨论】:

        猜你喜欢
        • 2020-02-21
        • 2015-02-08
        • 2016-10-11
        • 2016-07-19
        • 2014-06-19
        • 2017-12-26
        • 2017-11-01
        • 2023-03-14
        • 1970-01-01
        相关资源
        最近更新 更多