如何在 Grails 4 中设置日志级别

How to set the log level in Grails 4

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

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

选项 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 中通过编辑 运行 配置(见下文)。这样,我可以在部署时设置不同的日志记录级别。

您要编辑 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

希望对您有所帮助。

简单方法:

Update/Replace 您的 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 更多详细信息和所有日志级别。

希望对您有所帮助。