ChatGPT解决这个技术问题 Extra ChatGPT

Set root logging level in application.yml

I used an application.properties with Spring Boot (1.3 M1) and started to translate it into a yaml file because it grew more and more complex.

But I have problems translating this into yaml:

logging.level.*=WARN
logging.level.com.filenet.wcm=ERROR
logging.level.de.mycompany=DEBUG

The last two lines are easily translated into this:

logging:
    level:
        com.filenet.wcm: ERROR
        de.mycompany: DEBUG

But how to add the values for the root logging level ? These two approaches failed:

Failed approach 1:

logging:
    level: WARN
        com.filenet.wcm: ERROR
        de.mycompany: DEBUG    

Failed approach 2:

logging:
    level: 
        star: WARN
        com.filenet.wcm: ERROR
        de.mycompany: DEBUG    

I read the docs, searched stackoverflow and googled but did not find an example for a valid syntax.


A
Andy Wilkinson

You can use ROOT to configure the root logging level:

logging:
  level:
    ROOT: DEBUG

ouch, that one was less difficult and more obvious than I thought ;-)
How to change application package log level? E.g. com.myapp.services=TRACE. It is not considering application packages.
can I write ROOT as root, logging.level.root: DEBUG
Yes, you can use root.
Doesn't work with me. Set it to WARNING and I'm still getting info messages.
K
Kalpesh Soni

If you want level by package, you can use this syntax :

logging:
  level:
     org.springframework.web: DEBUG
     guru.springframework.controllers: DEBUG
     org.hibernate: DEBUG
     org: INFO

This is not what I was asking for
How to set different levels for org.springframework and for org.springframework.web ?
@gstackoverflow Just add a new line and specify the other package and the corresponding log level. Hope it helps.
Like org.springframework: INFO and org.springframework.web:DEBUG ?
@gstackoverflow Yep exactly.
t
torina

You can even use your classname to configure logging level:

logging:
  level:
    com.yourorganization.Yourclass: DEBUG

J
Joakim

It's an old question, but I just had this problem.

While setting

org.springframework.web: debug

or

org.hibernate: debug

works fine, if you want to do the same for your project files (setting level per package), you have to use wildcards. So, for the example in the question, it would be:

logging:
    level:
        root: WARN
        com.filenet.wcm.*: ERROR
        de.mycompany.*: DEBUG

Alternatively, you can set the logging level per class without using wildcards, as shown in torina's answer.


T
Thanthu

You can log incoming request by creating CommonsRequestLoggingFilter and adding

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

to application.properties file as explained in detail in this link - https://www.baeldung.com/spring-http-logging

@Configuration
public class RequestLoggingFilterConfig {

    @Bean
    public CommonsRequestLoggingFilter logFilter() {
        CommonsRequestLoggingFilter filter
          = new CommonsRequestLoggingFilter();
        filter.setIncludeQueryString(true);
        filter.setIncludePayload(true);
        filter.setMaxPayloadLength(10000);
        filter.setIncludeHeaders(false);
        filter.setAfterMessagePrefix("REQUEST DATA : ");
        return filter;
    }
}