Grails3配置logback日志管理

Grails3配置logback日志管理

描述:记录每日日志,按天分割,每个日志不超过10MB,若超出限制大小,另起一个文件保存。

配置grails-app/conf/logback.groovy文件

import ch.qos.logback.classic.Level
import ch.qos.logback.classic.filter.LevelFilter
import ch.qos.logback.core.spi.FilterReply

// See http://logback.qos.ch/manual/groovy.html for details on configuration
appender('STDOUT', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%-4(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} \\(%file:%line\\) - %msg%n"
    }
}
logger("console",ERROR,['STDOUT'],false)

root(ERROR, ['STDOUT'])


//日志级别从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL

//定义当前目录
def HOME_DIR = "."

//ERROR级别的日志
appender("ERROR", RollingFileAppender) {
    //过滤器,只记录ERROR级别的日志
    filter(LevelFilter) {
        level = Level.ERROR
        onMatch = FilterReply.ACCEPT
        onMismatch = FilterReply.DENY
    }
    //PatternLayoutEncoder对输出日志信息进行格式化
    encoder(PatternLayoutEncoder) {
        //默认为pattern = "%level %logger - %msg%n"
        //%d表示日期,%thread表示线程名,%level日志级别,%file具体的文件,%line记录日志位置,%msg日志消息,%n换行符
//        pattern = "%-4(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} \\(%file:%line\\) - %msg%n"
        pattern = "%-4(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} \\(%F:%L\\) - %msg%n"
    }
    //指定日志生成格式
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "${HOME_DIR}/logs/%d{yyyy-MM-dd}_ERROR_%i.log"
        maxHistory = 30 //日志最长保留30天
        timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) {
            maxFileSize = "10MB"
        }
    }

    //约束生成单个日志文件大小为10M,超过后新建一个文件保存
//    triggeringPolicy(SizeBasedTriggeringPolicy) {
//        maxFileSize = "10MB"
//    }
    append = true
}
logger("console",ERROR,['ERROR'],false)

//INFO级别的日志
appender("INFO", RollingFileAppender) {
    //过滤器,只记录INFO级别的日志
    filter(LevelFilter) {
        level = ch.qos.logback.classic.Level.INFO
        onMatch = FilterReply.ACCEPT
        onMismatch = FilterReply.DENY
    }
    //PatternLayoutEncoder对输出日志信息进行格式化
    encoder(PatternLayoutEncoder) {
        //默认为pattern = "%level %logger - %msg%n"
        //%d表示日期,%thread表示线程名,%level日志级别,%file具体的文件,%line记录日志位置,%msg日志消息,%n换行符
        pattern = "%-4(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{32} \\(%file:%line\\) - %msg%n"
    }
    //指定日志生成格式,文件名以日期命名,生成每日日志文件,如果超出大小则另起文件存放
    //%d{yyyy-MM-dd}-日期,%i-用于记录每日日志个数
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "${HOME_DIR}/logs/%d{yyyy-MM-dd}_INFO_%i.log"
        maxHistory = 30 //日志最长保留30天
        timeBasedFileNamingAndTriggeringPolicy(SizeAndTimeBasedFNATP) {
            maxFileSize = "10MB" //单个日志文件最大为10MB
        }
    }
//    //约束生成单个日志文件大小为10M,超过后新建一个文件保存
//    triggeringPolicy(SizeBasedTriggeringPolicy) {
//        maxFileSize = "10MB"
//    }
    append = true
}
//为false表示只打印到本log的appender中,不打印父类
logger("console",INFO,['INFO'],false)

//将指定级别的日志输出到日志文件中
root(ERROR, ['ERROR'])
//root(INFO, ['INFO'])

在使用的类上面添加@groovy.util.logging.Slf4j注解,用于记录日志位置

@groovy.util.logging.Slf4j
def index(Integer max) {
     def info = [result:false,msg:"操作失败"]
     log .error("参数信息: error={}" , info)
     render "记录日志"
}


//指定要在控制台打印的位置
logger('grails.app.controllers', INFO, ['STDOUT'], false)
logger('grails.app.services', INFO, ['STDOUT'], false)
logger('grails.app.jobs', INFO, ['STDOUT'], false)
logger('com.listener', INFO, ['STDOUT'], false)
  • 发表于 2017-11-17 17:36
  • 阅读 ( 2040 )
  • 分类:grails

0 条评论

请先 登录 后评论
不写代码的码农
Jonny

程序猿

65 篇文章

作家榜 »

  1. 威猛的小站长 124 文章
  2. Jonny 65 文章
  3. 江南烟雨 36 文章
  4. - Nightmare 33 文章
  5. doublechina 31 文章
  6. HJ社区-肖峰 29 文章
  7. 伪摄影 22 文章
  8. Alan 14 文章