【问题标题】:How to set the log level in Grails 4如何在 Grails 4 中设置日志级别
【发布时间】:2020-04-22 10:43:37
【问题描述】:

在我的 Grails 4 应用程序中,log.info("log message") 不显示日志,但 log.error("log message") 会。

如何在 Grails 4 中将日志级别从 error 更改为 info

【问题讨论】:

    标签: spring-boot grails logback grails-4


    【解决方案1】:

    选项 1

    我需要做的就是更新application.yml 文件并将以下内容添加到底部

    logging:
        level:
            root: INFO
    

    您还可以为单个包设置单个日志级别:

    logging:
        level:
            packageName: INFO
    

    选项 2

    由于 Grails 4 基于 Spring Boot,我最终只设置了适当的环境变量,即 logging.level.root=INFOlogging.level.com.mycompany.mypackage=INFO,这是我在 intellij 中通过编辑我的运行配置来完成的(见下文)。这样,我可以在部署时设置不同的日志记录级别。

    【讨论】:

      【解决方案2】:

      您想编辑 grails-app/conf/logback.groovy。下面是 Grails 4.0.1 的默认文件。

      import grails.util.BuildSettings
      import grails.util.Environment
      import org.springframework.boot.logging.logback.ColorConverter
      import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter
      
      import java.nio.charset.StandardCharsets
      
      conversionRule 'clr', ColorConverter
      conversionRule 'wex', WhitespaceThrowableProxyConverter
      
      // See http://logback.qos.ch/manual/groovy.html for details on configuration
      appender('STDOUT', ConsoleAppender) {
          encoder(PatternLayoutEncoder) {
              charset = StandardCharsets.UTF_8
      
              pattern =
                      '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date
                              '%clr(%5p) ' + // Log level
                              '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread
                              '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger
                              '%m%n%wex' // Message
          }
      }
      
      def targetDir = BuildSettings.TARGET_DIR
      if (Environment.isDevelopmentMode() && targetDir != null) {
          appender("FULL_STACKTRACE", FileAppender) {
              file = "${targetDir}/stacktrace.log"
              append = true
              encoder(PatternLayoutEncoder) {
                  charset = StandardCharsets.UTF_8
                  pattern = "%level %logger - %msg%n"
              }
          }
          logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false)
      }
      root(ERROR, ['STDOUT'])
      

      具体的改变取决于你真正想要做什么。例如,如果您有一个名为 demo.SomeController 的控制器,并且您想将其日志级别设置为 INFO,您可以添加如下内容:

      logger 'demo.SomeController', INFO, ['STDOUT'], false
      

      请参阅http://logback.qos.ch/manual/groovy.html 以获取完整的配置参考。

      希望对你有帮助。

      【讨论】:

      • 我添加了 logger ("org.hibernate.orm.deprecation", ERROR, ["STDOUT"]) root(ERROR, ['STDOUT']) 但我仍然从 org. hibernate.orm.deprecation。我错过了什么?
      【解决方案3】:

      简单的方法:

      使用以下代码更新/替换您的grails-app/conf/logback.groovy

          import ch.qos.logback.classic.encoder.PatternLayoutEncoder
      
      appender("FILE", RollingFileAppender) {
          file = "logs/FILE-NAME.log"
          rollingPolicy(TimeBasedRollingPolicy) {
              fileNamePattern = "logs/FILE-NAME-%d{yyyy-MM-dd}.log"
              maxHistory = 30
          }
          encoder(PatternLayoutEncoder) {
              pattern = "%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n"
          }
      
      }
      root(INFO, ["FILE"])
      

      以上解决方案将记录器级别显示为INFO

      您可以参考this 更多详细信息和所有日志级别。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 2020-05-11
        • 1970-01-01
        • 2013-03-10
        • 2018-06-27
        • 2018-07-18
        相关资源
        最近更新 更多