带有多模块 maven 项目 spring-boot 的 TinyLog v2
TinyLog v2 with multimodule maven project spring-boot
您好,我有一个基于多模块 springboot 的项目,我想为每个模块保持单独的日志记录。
我使用的是 tiny log 2,但我面临的问题是,当抛出堆栈跟踪时,它没有被捕获到我的滚动日志文件中。
这是 tinyLog 配置:
exception = strip: jdk.internal
writer = file
writer.format = {date} [{class}] {level}: {message}
writer.file = log.txt
这样,当没有错误时,我看到正确的日志记录。但是我故意给出了错误的 mysql 连接属性,然后我在控制台上看到了一大堆错误日志,但在日志文件中我只看到了调试信息日志。
这可能是由于以下两个原因之一造成的:
1) Maven 配置不完整
为了使用 tinylog 而不是 Logback,后者是 Spring Boot 的默认日志记录后端,您必须排除 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.
如果两个建议中的 none 都解决了问题,那么了解正在使用哪个日志记录 API 来记录丢失的异常会很有帮助。
您好,我有一个基于多模块 springboot 的项目,我想为每个模块保持单独的日志记录。 我使用的是 tiny log 2,但我面临的问题是,当抛出堆栈跟踪时,它没有被捕获到我的滚动日志文件中。 这是 tinyLog 配置:
exception = strip: jdk.internal
writer = file
writer.format = {date} [{class}] {level}: {message}
writer.file = log.txt
这样,当没有错误时,我看到正确的日志记录。但是我故意给出了错误的 mysql 连接属性,然后我在控制台上看到了一大堆错误日志,但在日志文件中我只看到了调试信息日志。
这可能是由于以下两个原因之一造成的:
1) Maven 配置不完整
为了使用 tinylog 而不是 Logback,后者是 Spring Boot 的默认日志记录后端,您必须排除 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.
如果两个建议中的 none 都解决了问题,那么了解正在使用哪个日志记录 API 来记录丢失的异常会很有帮助。