首页 > 其他分享 >logback将日志写入到ELK

logback将日志写入到ELK

时间:2022-12-27 14:56:58浏览次数:67  
标签:ELK MM logback class logstash 日志 ref appender

springboot中使用logback将日志写入到ELK平台 

 原文:http://www.tingcream.com/blogArticle/detail/b9ab76ffaeb547388522c9b982e6f419

ELK 是由elasticsearch 、logstash、kibana 三个单词的首字母组成

elasticsearch: 一款优秀的开源分布式搜索引擎系统 

logstash:开源的日志分析、过滤、收集工具

kibana: ES的图形化用户界面

这三款产品都是 ES 家族的产物,官网: https://www.elastic.co 

 

springboot中使用logback将日志写入到ELK平台

把日志转成json文件即可

 

 

1、pom.xml配置

 

?
1 2 3 4 5 6 <!--集成 logstash 日志-->   <dependency>     <groupId>net.logstash.logback</groupId>     <artifactId>logstash-logback-encoder</artifactId>     <version>5.3</version>   </dependency>
2、logback-spring.xml配置

 

 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 <?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界面 :

 

 

  TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back     此页面的语言为中文(简体)   翻译为        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

标签:ELK,MM,logback,class,logstash,日志,ref,appender
From: https://www.cnblogs.com/d0minic/p/16924376.html

相关文章

  • golang入门项目—日志收集
    传统ELK架构的日志收集:存在的问题:Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。适用于小规模的集群使用。第二种架构:位于各个节点上......
  • 收集日志之一:logstash方式
    部署logstash:Logstash是一个开源的数据收集引擎,基于ruby开发,可以水平伸缩,而且logstash整个ELK当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一......
  • Nlog日志
    第一步:下载Newget包  第二步:新建配置文件 nlog.config(xml文件名字保持一直)<?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.org......
  • 【问题记录】【SpringBoot】【Swagger】启动的时候,有一堆Swagger冲突的日志,看着不爽 G
    1 问题描述swagger版本,启动时候报一堆冲突,虽然没什么影响但是看着不是很爽,以及默认的Swagger主页会有别的Controller信息。<springfox-swagger2.version>2.9.2</s......
  • IIS日志存放目录
    ​用户每打开一次网页,iis都会记录用户IP、访问的网页地址、访问时间、访问状态等信息,这些信息保存在iis日志文件里,方便网站管理员掌握网页被访问情况和iis服务器运行......
  • 【日志框架】SLF4J教程、Log4j漏洞、Logback与log4j比较
    一、参考资料​​SLF4J简介-SLF4J教程™​​​​logback和log4j比较,前者是后者改良,logback配置详解_zbajie001的博客-​​Log4j爆“核弹级”漏洞,Flink、Kafka等至少十多个......
  • MapReduce实战之过滤日志及自定义日志输出路径案例(自定义OutputFormat)
    1)需求      过滤输入的log日志中是否包含atguigu      (1)包含atguigu的网站输出到e:/atguigu.log      (2)不包含atguigu的网站输出到e:/other.log2)输入......
  • 一个简单的c++写日志类
    在开发当中有的直接调试很方便,有的就不太好调试,所以我经常使用写日志以及输出Debug信息来进行开发。尽管我比较喜欢使用以输出Debug的信息的方式来跟踪程序。因为直接一句......
  • Sql Server 压缩数据库日志文件的方法解析
    SqlServer日志_log.ldf文件太大,数据库文件有500g,日志文件也达到了500g,占用磁盘空间过大,且可能影响程序性能,需要压缩日志文件,下面小编给大家讲解下SqlServer压缩数据......
  • 基于AD Event日志监测域内信息探测行为
    01、简介当攻击者获得内网某台域内服务器的权限,就会以此为起始攻击点,尽可能地去收集域的信息,以获取域控权限作为内网的终极目标。例如,攻击者会在内网中收集域管理员用户列......