前言
Logback是一个开源的日志组件,SpringBoot中现在内置的也是logback日志框架,可以看出来它的地位,本篇文章主要就是介绍logback的上产使用配置等,以及一些比较重要的解决方案,本文中的文件直接就可以上生产使用。
1.logstash直接配置在logback:
logback是可以支持直接配置logstash的ip和端口进行推送的,类似于阿里云的日志推送。当然如果考虑到量大的的话可以采用filebeat直接推送es,
通过定义pipeline.json来进行创建索引,也可以采用filebeat-》logstash(解决索引问题)-》es,当然也可以加入通过其他的kafka中间件等。下面文件是logstash的logback中的配置文件,修改对应的ip和端口即可。
<?xml version="1.0" encoding="UTF-8"?>
<included>
<!-- 将日志打印到控制台 -->
<appender name="PROJECT-CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern> %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 将日志写入到文件配置 -->
<appender name="PROJECT-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.path}/application.log</file>
<encoder >
<pattern>"host": "%ip" %d{HH:mm:ss.SSS} %-5level [%thread] %logger{32}[%file:%line] -> %msg%n</pattern>
<charset class="java.nio.charset.Charset">UTF-8</charset>
</encoder>
<!--配置备份 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logging.path}/application.log.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<!-- logback 和 logstash 通讯配置 -->
<appender name="SOCKET" class="net.logstash.logback.appender.LogstashSocketAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<host>${logstash.host}</host>
<port>${logstash.port}</port>
</appender>
<!-- logstash远程日志配置-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${logstash.host}:${logstash.port}</destination>
<!--输出打印json格式-->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
<!--输出日志可自定义,可根据自己需要配置-->
{
<!--es索引名称 -->
"indexname":"test_logstash",
<!--应用名称 -->
"appname":"${spring.application.name}",
<!--服务器ip -->
"host": "%ip",
<!--应用端口 -->
"port": "${spring.application.index}",
<!--打印时间 -->
"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
<!--线程名称 -->
"thread": "%thread",
<!--日志级别 -->
"level": "%level",
<!--日志名称 -->
"logger_name": "%logger",