Solon

logback-solon-plugin

v2.7.5 native </> markdown
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>logback-solon-plugin</artifactId>
</dependency>

1、描述

日志扩展插件,基于 logback 适配插件。(以后将由 solon.logging.logback 替代,新名字更有系列感觉)

2、配置示例

日志等级的优先顺序:appender > logger > root。具体配置示例:

solon.app:
  name: demoapp

# 以下为默认值,可以都不加,或者想改哪行加哪行(支持"云端配置服务"进行配置,支持写到"云端日志服务")
solon.logging.appender:
  console:
    level: TRACE
  file:
    name: "logs/${solon.app.name}"
    level: INFO
    maxFileSize: "10 MB"
    maxHistory: "7"
  cloud:
    level: INFO
    
# 记录器级别的配置示例
solon.logging.logger:
  "root":  #默认记录器配置
    level: TRACE
  "com.zaxxer.hikari":
    level: WARN    

如果需要指定 file 的 rolling 路径:

solon.logging.appender:
  file:
    name: "logs/${solon.app.name}"
    rolling: "logs/${solon.app.name}_%d{yyyy-MM-dd}_%i.log"

如果想用 Spring boot 怀旧风格:

solon.app:
  name: demoapp

solon.logging.appender:
  console:
    pattern: "%d{yyyy-MM-dd HH:mm:SSS} %highlight(%-5level) %magenta(${PID:-}) --- %-20(%yellow([%20.20thread])) %-56(%cyan(%-40.40logger{39}%L)) : %msg%n"
  file:
    pattern: "%d{yyyy-MM-dd HH:mm:ss} %-5level ${PID:-} --- %-20([%20.20thread]) %-56(%-40.40logger{39}%L) : %msg%n"

3、应用示例

@SolonMain
public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args);
    }
}

@Controller
public class DemoController{
    static Logger log = LoggerFactory.getLogger(DemoController.class);
    
    @Mapping("/hello")
    public void hello(String name){
        //默认的打印格式,支持 MDC 显示
        MDC.put("user", name);
        
        log.info("hello world!");
    }
}

4、高度定制(比如,不同业务的日志写到不同文件里)

如果想高度定制,自定义可 xml 配置(支持环境切换)

#默认配置,可以从插件里复制 logback-def.xml 进行修改(-solon 可以支持 solon 特性)
logback-solon.xml

#环镜配置
logback-solon-{env}.xml 

也可以用 logback.xml 配置文件。但其它配置都会失效,也没有环境切换功能

复制参考:https://gitee.com/noear/solon/blob/master/solon-projects/solon-logging/solon.logging.logback/src/main/resources/META-INF/solon_def/logback-def.xml