这是一个非常简单的问题,但我找不到相关信息 (也许我对Java框架的了解非常缺乏)
如何使用application.properties设置日志记录级别?
并记录文件位置等?
答案 0 :(得分:271)
更新:从Spring Boot v1.2.0.RELEASE开始,application.properties
或application.yml
中的设置确实适用。请参阅参考指南的Log Levels section。
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
对于早期版本的Spring Boot,你不能。您只需为日志框架(log4j,logback)使用正常配置即可。将适当的配置文件(log4j.xml
或logback.xml
)添加到src/main/resources
目录并根据自己的喜好进行配置。
通过从命令行启动应用程序时指定--debug
,可以启用调试日志记录。
Spring Boot为logback提供了一个很好的起点,可以配置一些默认值,着色等base.xml文件,您可以将其简单地包含在logback.xml文件中。 (这也是Spring Boot中默认的logback.xml推荐的。
<include resource="org/springframework/boot/logging/logback/base.xml"/>
答案 1 :(得分:92)
您可以使用application.properties执行此操作。
logging.level.=ERROR
- &gt;将根日志记录级别设置为错误
...
logging.level.=DEBUG
- &gt;将根日志记录级别设置为DEBUG
logging.file=${java.io.tmpdir}/myapp.log
- &gt;将绝对日志文件路径设置为TMPDIR / myapp.log
关于使用配置文件进行日志记录的一组合理的默认application.properties将是:
application.properties:
spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log
application-dev.properties:
logging.level.=DEBUG
logging.file=
当您在自己喜欢的IDE内部开发时,只需将-Dspring.profiles.active=dev
作为VM参数添加到应用程序的运行/调试配置中。
这将使您在开发期间仅记录生产和调试日志记录时出错,而无需将输出写入日志文件。这将改善开发期间的性能(并节省SSD驱动器的运行时间;)。)。
答案 2 :(得分:44)
设置 root 日志记录级别的正确方法是使用属性logging.level.root
。请参阅documentation,该问题自最初询问此问题以来已更新。
示例:
logging.level.root=WARN
答案 3 :(得分:13)
假设您的应用程序的包名为com.company.myproject
。然后,您可以在application.properties文件
logging.level.com.company.myproject = DEBUG
logging.level.org.springframework.web = DEBUG
和logging.level.org.hibernate = DEBUG
将仅为Spring框架Web和Hibernate的类设置日志记录级别。
要设置日志文件位置,请使用
logging.file = /home/ubuntu/myproject.log
答案 4 :(得分:10)
确保Dave Syer提示得到一些爱,因为将debug=true
添加到application.properties确实会启用调试日志记录。
答案 5 :(得分:9)
如果您使用的是Spring Boot,那么您可以直接在application.properties 文件中添加以下属性来设置日志记录级别, 自定义日志记录模式并将日志存储在外部文件中。
这些是不同的日志记录级别及其从最小值&lt;&lt;最大。
OFF&lt;&lt;致命&lt;&lt;错误&lt;&lt; WARN&lt;&lt; INFO&lt;&lt; DEBUG&lt;&lt; TRACE&lt;&lt; ALL 强>
# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace
# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.
logging.file=D:/spring_app_log_file.log
# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
请通过此链接更加生动地自定义您的日志。
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
答案 6 :(得分:8)
如果您想使用不同的日志框架,例如log4j,我发现最简单的方法是禁用spring boots自己的日志记录并实现自己的日志记录。这样我就可以在一个文件中配置每个loglevel,log4j.xml(在我的例子中)就是这样。
要实现这一点,您只需将这些行添加到您的pom.xml:
<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>
您可能已经拥有了第一个依赖项,只需要另外两个。请注意,此示例仅涵盖log4j 就是这样,现在你已经准备好在log4j配置文件中配置启动日志了!
答案 7 :(得分:3)
对于记录:official documentation,对于Spring Boot v1.2.0.RELEASE和Spring v4.1.3.RELEASE:
如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,那么您可以使用&#34; logging.level&#34;在application.properties中执行此操作。前缀,例如
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
您还可以使用&#34; logging.file&#34;来设置要登录的文件的位置(除控制台外)。
要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式。默认情况下,Spring Boot从系统的默认位置(例如,类路径:Logback的logback.xml)中选择本机配置,但您可以使用&#34; logging.config&#34;设置配置文件的位置。属性。
答案 8 :(得分:3)
使用Springboot 2,您可以使用以下环境变量来设置根日志记录级别:
logging.level.root=DEBUG
或者您可以为此类软件包设置特定的日志记录:
logging.level.my.package.name=TRACE
答案 9 :(得分:1)
如果是eclipse IDE并且您的项目是maven,请记住清理并构建项目以反映更改。
答案 10 :(得分:0)
在春季启动项目中,我们可以编写logging.level.root = WARN,但是这里的问题是,即使我们添加了devtools依赖项,我们也必须重新启动,如果在属性文件中修改了任何值,将无法自动检测到,为此我开始了解解决方案,即我们可以在pom.xml中添加执行器并通过记录员级别,如下所示,在邮递员客户端中 在网址列http://localhost:8080/loggers/ROOT或http://localhost:8080/loggers/中 在正文中,您可以传递如下的json格式
{
"configuredLevel":null
effectiveLevel":"WARN"
}
答案 11 :(得分:0)
现有答案很棒。我只想与您分享一个新的spring boot功能,该功能允许对日志进行分组并在整个组上设置日志记录级别。
文档中的示例:
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
logging.level.tomcat=TRACE
这是一个很棒的功能,它带来了更多的灵活性。
答案 12 :(得分:0)
在当前配置中,我在 application.yaml 中定义了它,如下所示:
logging:
level:
ROOT: TRACE
我正在使用spring-boot:2.2.0.RELEASE。
答案 13 :(得分:0)
您可以尝试将日志级别设置为DEBUG,它将在启动应用程序时显示所有内容
logging.level.root=DEBUG
答案 14 :(得分:0)
我们也可以通过命令行打开调试日志,如下所示:-
java -jar <jar file> --debug
答案 15 :(得分:0)
logging:
level:
root: INFO
com.mycompany.myapp: DEBUG