【问题标题】:TinyLog v2 with multimodule maven project spring-boot带有多模块 Maven 项目 spring-boot 的 TinyLog v2
【发布时间】:2021-02-11 15:11:16
【问题描述】:

您好,我有一个基于多模块 springboot 的项目,我想为每个模块单独记录日志。 我使用的是小日志 2,但我面临的问题是,当抛出堆栈跟踪时,它不会在我的滚动日志文件中被捕获。 这是 tinyLog 的配置:

exception = strip: jdk.internal
writer        = file
writer.format = {date} [{class}] {level}: {message}
writer.file   = log.txt

这样,当没有错误时,我会看到正确的日志记录。但是我故意给了错误的 mysql 连接属性,然后我在控制台上看到一大堆错误日志,但在日志文件上我只看到调试、信息日志。

【问题讨论】:

    标签: spring-boot tinylog


    【解决方案1】:

    这可能是由于以下两个原因之一:

    1) Maven 配置不完整

    为了使用 tinylog 代替 Spring Boot 的默认日志后端 Logback,您必须排除 Spring Boot 的日志依赖并用相应的 tinylog 工件替换它们:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jul-to-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>log4j-over-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>tinylog-api</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>tinylog-impl</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>slf4j-tinylog</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>jcl-tinylog</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.tinylog</groupId>
            <artifactId>log4j1.2-api</artifactId>
            <version>2.2.1</version>
        </dependency>
    </dependencies>
    

    (复制自https://github.com/pmwmedia/tinylog-spring-boot-example/blob/v2/pom.xml

    2) 异常不是通过 Logger 输出的

    您是否检查过异常是通过记录器(例如Logger.error(ex))记录的,而不是通过ex.printStackTrace() 直接打印到控制台的? tinylog(和任何其他日志框架)只能将日志条目写入文件,前提是这些日志条目是通过日志 API 发出的。

    如果这两个建议都不能解决问题,那么了解使用哪个日志记录 API 来记录丢失的异常会很有帮助。

    【讨论】:

    • 感谢您的意见。你是对的,我错过了几个依赖项,我也通过 SpringContext 抛出的 tinylog 的 logger 语句记录了 trowable。现在完整的跟踪记录在控制台和文件上。干杯!
    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 2015-10-10
    • 2017-07-06
    • 2014-06-02
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多