我有一个服务,在很多地方都有这样的记录器
$dataEncrypt
这些记录器正在写入我的控制台,但没有写入我在我的application.properties文件中指定的文件
private static final Logger LOGGER =
LoggerFactory.getLogger(myclass.class);
我的pom.xml文件
logging.file=my-service.log
我尝试添加自己的logback-spring.xml文件,该文件只写入文件,但似乎只是停止打印到控制台,但它仍然没有写入文件。这里描述Spring Boot - no log file written (logging.file is not respected)
我已经完成了代码并注意到LoggingSystem类正在正确设置属性。如果我像这样排除了启动日志记录依赖性
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt-spring31</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.193</version>
</dependency>
<dependency>
<groupId>com.maxmind.geoip</groupId>
<artifactId>geoip-api</artifactId>
<version>1.3.1</version>
</dependency>
<!-- AWS Dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-actuator</artifactId>
</dependency>
<!-- END of AWS Dependencies -->
然后由内部Java处理程序创建服务日志文件,它的格式错误。我想使用Spring,因为它可以在将日志级别设置为TRACE或DEBUG时显示更多信息。
有没有其他人看过这个问题并且知道如何让Spring将服务日志写入指定的字段?
更新
似乎问题来自这些依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
似乎任何springframework.cloud依赖项都会导致项目无法创建logging.file文件。
答案 0 :(得分:1)
我发现了问题和解决方案。 我需要输入日志属性,如
logging.file=my-service.log
在 bootstrap.properties 文件中。此文件应位于application.properties文件所在的资源目录中。
似乎在使用springframework.cloud时,首先调用BootstrapApplicationListener来初始化LogbackLoggingSystem类。然后,由于这些属性已初始化,因此应用程序会在application.properties文件中忽略它们。
更多https://github.com/spring-projects/spring-boot/issues/7099