springboot中使用logback将日志写入到ELK平台
ELK是由elasticsearch 、logstash、kibana三个单词的首字母组成elasticsearch:一款优秀的开源分布式搜索引擎系统logstash:开源的日志分析、过滤、收集工具kibana: ES的图形化用户界面这三款产品都是 ES家族的产物,官网:https://www.elastic.cospringboot中使用logback将日志写入到ELK平台1、pom.xml配置
ELK 是由elasticsearch 、logstash、kibana 三个单词的首字母组成
elasticsearch: 一款优秀的开源分布式搜索引擎框架,基于lucence.
logstash:开源的日志分析、过滤、收集工具
kibana: ES的图形化用户界面
这三款产品都是 ES 家族的产物,官网: https://www.elastic.co
springboot中使用logback将日志写入到ELK平台
1、pom.xml配置
<!--集成 logstash 日志-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
2、logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--指定property属性变量-->
<property name="log.path" value="/logs/logdemo"/>
<!-- 日志输出格式
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
-->
<!-- 控制台 appender-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 文件 滚动日志 (all)-->
<appender name="allLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前日志输出路径、文件名 -->
<file>${log.path}/all.log</file>
<!--日志输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--历史日志归档策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 历史日志: 归档文件名 -->
<fileNamePattern>${log.path}/%d{yyyy-MM, aux}/all.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!--单个文件的最大大小-->
<maxFileSize>64MB</maxFileSize>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<!-- 文件 滚动日志 (仅error)-->
<appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前日志输出路径、文件名 -->
<file>${log.path}/error.log</file>
<!--日志输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!--历史日志归档策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 历史日志: 归档文件名 -->
<fileNamePattern>${log.path}/%d{yyyy-MM, aux}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<!--单个文件的最大大小-->
<maxFileSize>64MB</maxFileSize>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
<!-- 此日志文档只记录error级别的 level过滤器-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 文件 异步日志(async) -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"
immediateFlush="false" neverBlock="true">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<neverBlock>true</neverBlock>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="allLog" />
</appender>
<!--输出到logstash的appender-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>192.168.11.10:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<!--自定义字段,区分应用名称-->
<customFields>{"appname":"logdemo"}</customFields>
</encoder>
</appender>
<!-- root 级别的配置 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<!--<appender-ref ref="allLog" />-->
<appender-ref ref="ASYNC"/>
<appender-ref ref="errorLog" />
<appender-ref ref="logstash" />
</root>
<!--可输出mapper层sql语句等-->
<logger name="com.tingcream" level="debug">
</logger>
<!--输出jdbc 事务相关信息-->
<logger name="org.springframework.jdbc" level="debug">
</logger>
</configuration>
其中的关键配置是:
<!--输出到logstash的appender-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>192.168.11.10:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<!--自定义字段,区分应用名称-->
<customFields>{"appname":"logdemo"}</customFields>
</encoder>
</appender>
<!-- root 级别的配置 -->
<root level="INFO">
<appender-ref ref="logstash" />
</root>
3、Centos中安装logstash工具
tar -zxvf logstash-6.8.10.tar.gz -C /usr/local/
cd /usr/local/
mv logstash-6.8.10 logstash #重命名
收集springboot项目中的日志
cd /usr/local/logstash && mkdir conf.d
cd conf.d
vi 1.springboot-es-log.conf,内容如下
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "192.168.11.10:9200"
index => "springboot-logstash-%{+YYYY.MM.dd}"
}
}
bin/logstash -f conf.d # 启动logstash
4、启动springboot项目,访问首页,浏览器访问kibana或es head图形界面
kibana界面:
es head界面:
更多推荐
所有评论(0)