想要配置spring-boot(1.3.5)应用程序以仅将日志输出发送到文件 - 关闭控制台。
根据文档,它看起来很容易: howto-logging.html - 部分 §72.1.1配置仅文件输出的回溯
但是我无法让它工作 - 它仍然会将两者记录到文件和控制台,无论我尝试什么。 谷歌搜索了几个小时,但找不到任何实际可行的建议。
有任何疑问可能是什么问题?
编辑 :不要将此标记为“重复” - 我已全部阅读 - 并且没有建议的解决方案在这里工作。
答案 0 :(得分:2)
只需在类路径根目录中添加logback.xml
,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="FILE_APPENDER" class="ch.qos.logback.core.FileAppender">
<file>myApp.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE_APPENDER" />
</root>
</configuration>
这会将所有日志写入myApp.log
文件。结帐Spring Boot documentation以获得更详细的讨论。
答案 1 :(得分:2)
在application.properties中设置logging.pattern.console=
(值留空),对我有用。
答案 2 :(得分:1)
设置好后,这些是我遵循的步骤:
使用此pom文件创建一个演示Spring Boot Web项目:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo2</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
正如in the docs所述,日志启动器不是必需的,因为它已经包含在Web启动器中。让我们创建一个@Service
,其中包含一些slf4j日志记录(根本不需要):
@Service
public class MyService {
private Logger logger = LoggerFactory.getLogger(MyService.class);
public MyService() {
logger.info("Created!");
}
}
然后,我们创建一个logback-spring.xml文件,仅配置文件appender而不是控制台的文件,如文档所示。将它保存在 src / main / resources 文件夹中,Maven放置在类路径的根目录下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="target/spring.log" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
项目启动时,初始日志显示在控制台中,但不会显示更多输出,因为它会重定向到target / spring.log文件。
答案 3 :(得分:1)
最后---我发现了这个错误...... 这是一个多模块构建,结果在一个子模块中,还有一个 logback.xml ,显然优先于 logback-spring.xml 我正在摆弄。当我从构建中排除其他文件时,它最终按预期工作。呼....