SpringBoot+Logback+Logstash

Maven

<dependency>
    <groupId>com.xyd.common.logback</groupId>
    <artifactId>common-sb-logback</artifactId>
    <version>2.1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

配置

以下配置公共部分可以配置到application.yml或bootstrap.yml中,区分环境的配置可以配置到application-${spring.profiles.active}.yml或bootstrap-${spring.profiles.active}.yml中

logging:
  path: /logs #日志存储目录,默认/logs
  file-prefix: log #日志存储文件,效果log-info.log、log-error.log,默认log
  root-level: debug #日志级别,默认debug
  logger-level-config-path: logback-base-ignore.xml #自定义logger level访问路径
  console-level: debug #console输出的日志级别,默认debug
  logstash:
    enabled: true #开启logstash,默认false
    tcp-destinations: ip:port,ip:port #logstash推送目标
    tcp-custom-fields: '{"type":"project自定义","HOSTNAME":"${HOSTNAME}"}' #logstash推送自定义属性,支持获取系统变量

自定义日志存储

例:独立记录com.rule.manager对应的日志
启用logging.logger-level-config-path=logger-level-custom.xml

logger-level-custom.xml配置如下:

<appender name="RULE_MANAGER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在记录的日志文件的路径及文件名 -->
    <file>${logPath}/${logPrefix}-rule.log</file>
    <!--日志文件输出格式-->
    <encoder>
        <pattern>${FILE_LOG_PATTERN}</pattern>
        <charset>UTF-8</charset>
    </encoder>
    <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 每天日志归档路径以及格式 -->
        <fileNamePattern>${logPath}/${logPrefix}-rule-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${maxFileSize}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!--日志文件保留天数-->
        <maxHistory>${maxHistory}</maxHistory>
    </rollingPolicy>
</appender>
<logger name="com.rule.manager" level="debug" additivity="false">
    <appender-ref ref="RULE_MANAGER_FILE" />
</logger>
additivity=false时,com.rule.manager对应的日志只会存储在RULE_MANAGER_FILE对应的配置中,其他File不会存储
additivity=true时,com.rule.manager对应的日志会存储在RULE_MANAGER_FILE以及其他File