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 |