iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >怎么利用logstash收集springboot日志
  • 162
分享到

怎么利用logstash收集springboot日志

2023-06-14 22:06:16 162人浏览 安东尼
摘要

怎么利用logstash收集SpringBoot日志?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Maven依赖<dependency> 

怎么利用logstash收集SpringBoot日志?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Maven依赖

<dependency>    <groupId>net.logstash.logback</groupId>    <artifactId>logstash-logback-encoder</artifactId>    <version>5.1</version></dependency>

springboot 配置文件

logging:  config: classpath:logback.xml

logback.xml

<?xml version="1.0" encoding="UTF-8"?><configuration><include resource="org/springframework/boot/logging/logback/base.xml" /><!--======================================= 本地变量 ======================================== --><!--在没有定义${LOG_HOME}系统变量的时候,可以设置此本地变量。提交测试、上线时,要将其注释掉,使用系统变量。 --><property name="LOG_HOME" value="logs/spring.log" /><!-- 应用名称:和统一配置中的项目代码保持一致(小写) --><property name="APP_NAME" value="log" /><!--日志文件保留天数 --><property name="LOG_MAX_HISTORY" value="30" /><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --><!--应用日志文件保存路径 --><property name="LOG_APP_HOME" value="${APP_NAME}/%d{yyyy-MM-dd}" /><!--=========================== 按照每天生成日志文件:默认配置=================================== --><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 按照每天生成日志文件:主项目日志 --><appender name="APP"class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_APP_HOME}/base.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>${LOG_MAX_HISTORY}</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{500} - %msg%n</pattern></encoder></appender><!--=============================== 日志输出: 默认主业务日志 ====================================== --><logger name="org.springframework"><level value="WARN" /></logger><logger name="org.apache.shiro"><level value="WARN" /></logger><logger name="freemarker"><level value="WARN" /></logger><logger name="org.hibernate"><level value="WARN" /></logger><logger name="org.hibernate.sql"><level value="DEBUG" /></logger><logger name="org.apache.ibatis"><level value="DEBUG" /></logger><logger name="org.mybatis.spring"><level value="DEBUG" /></logger><logger name="com.alibaba.druid"><level value="DEBUG,INFO" /></logger>    <!-- 这里是你的业务的包名 -->    <logger name="com.bart.elk"><level value="DEBUG" /></logger><!-- logstash ip和暴露的端口,我目前理解就是通过这个地址把日志发送过去  --><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashtcpSocketAppender"><!-- 和logstash 的input 配置的端口保持一致 -->        <destination>localhost:4567</destination>         <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />    </appender><root level="warn,info,debug"><appender-ref ref="APP" /><appender-ref ref="STDOUT" /><appender-ref ref="LOGSTASH" />        <appender-ref ref="CONSOLE" /></root></configuration>

logstash

springboot-log.conf

# 文档 # https://www.elastic.co/guide/en/logstash/5.6/input-plugins.htmlHttps://www.elastic.co/guide/en/logstash/6.1/input-plugins.htmlinput{tcp {        mode => "server"        host => "0.0.0.0"        port => 4567        codec => JSON_lines}}output{    # 为了模拟测试就先不放es了,在控制台输出测试看看#elasticsearch{#    hosts=>["127.0.0.1:9200"]#    index => "springboot-elk-%{+YYYY.MM.dd}"    #}stdout{codec => rubydebug}}

测试接口

import java.time.LocalDateTime;import java.time.fORMat.DateTimeFormatter;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.WEB.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;@RestControllerpublic class apiTests {protected final static Logger log = LoggerFactory.getLogger(ApiTests.class);@GetMapping("/api/log")public Object log() {ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();String ip = request.getRemoteAddr();String uri = request.getRequestURI();String logStr = String.format("IP=[%s] send request URI = [%s]", ip, uri);log.debug("[debug] "+logStr);log.info("[info] "+logStr);log.warn("[warn] "+logStr);log.error("[error] "+logStr);return "ok : "+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));}}

测试效果

先运行logstash

linux: bin/logstash -f config/springboot-log.conf# windows: bin\logstash.bat -f config/springboot-log.conf

在运行springboot项目,然后调用测试接口:http://localhost:8080/api/log

观察logstash控制台输出:

{     "@timestamp" => 2021-04-28T15:40:43.182Z,          "level" => "DEBUG",           "port" => 57778,    "thread_name" => "http-NIO-8080-exec-1",    "level_value" => 10000,       "@version" => "1",           "host" => "127.0.0.1",    "logger_name" => "com.bart.elk.ApiTests",        "message" => "[debug] IP=[127.0.0.1] send request URI = [/api/log]"}{     "@timestamp" => 2021-04-28T15:40:43.182Z,          "level" => "INFO",           "port" => 57778,    "thread_name" => "http-nio-8080-exec-1",    "level_value" => 20000,       "@version" => "1",           "host" => "127.0.0.1",    "logger_name" => "com.bart.elk.ApiTests",        "message" => "[info] IP=[127.0.0.1] send request URI = [/api/log]"}{     "@timestamp" => 2021-04-28T15:40:43.183Z,          "level" => "WARN",           "port" => 57778,    "thread_name" => "http-nio-8080-exec-1",    "level_value" => 30000,       "@version" => "1",           "host" => "127.0.0.1",    "logger_name" => "com.bart.elk.ApiTests",        "message" => "[warn] IP=[127.0.0.1] send request URI = [/api/log]"}{     "@timestamp" => 2021-04-28T15:40:43.183Z,          "level" => "ERROR",           "port" => 57778,    "thread_name" => "http-nio-8080-exec-1",    "level_value" => 40000,       "@version" => "1",           "host" => "127.0.0.1",    "logger_name" => "com.bart.elk.ApiTests",        "message" => "[error] IP=[127.0.0.1] send request URI = [/api/log]"}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么利用logstash收集springboot日志

本文链接: https://www.lsjlt.com/news/275452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么利用logstash收集springboot日志
    怎么利用logstash收集springboot日志?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。maven依赖<dependency> ...
    99+
    2023-06-14
  • 一文秒懂logstash收集springboot日志的方法
    maven依赖 <dependency> <groupId>net.logstash.logback</groupId> &l...
    99+
    2024-04-02
  • 如何使用Logstash收集PHP相关日志
    本篇内容介绍了“如何使用Logstash收集PHP相关日志”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这...
    99+
    2024-04-02
  • 利用Redis实现分布式日志收集
    Redis是一个高性能的内存数据库,可用于缓存、队列、分布式锁、发布/订阅等多种应用场景。本文将介绍如何利用Redis实现分布式日志收集,其中包括:使用Redis的List数据结构保存日志;使用Redis的Pub/Sub(发布/订阅)功能实...
    99+
    2023-11-07
    分布式 redis 日志收集
  • android崩溃日志怎么收集
    要收集Android崩溃日志,可以使用以下方法:1. 使用Android的内置崩溃日志收集机制:Android系统会自动记录崩溃日志...
    99+
    2023-10-18
    android
  • oracle中tfa日志收集工具怎么用
    小编给大家分享一下oracle中tfa日志收集工具怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!TFA工具理论上提供所有数...
    99+
    2024-04-02
  • Springboot如何利用拦截器拦截请求信息收集到日志详解
    目录1、需求2、问题2、获取1)导入依赖为了获取客户端类型、操作系统类型、ip、port2)封装获取body字符串的工具类3)拦截器类4)继承 HttpServletRequestW...
    99+
    2024-04-02
  • filebeat怎么收集多个目录日志
    Filebeat可以通过配置多个输入来收集多个目录的日志。以下是一个示例配置文件:```yamlfilebeat.inputs:- ...
    99+
    2023-10-11
    filebeat
  • kafka怎么直接收集日志数据
    要直接收集日志数据到Kafka,你可以采取以下几种方法:1. 使用Kafka生产者API:使用Kafka的Producer API,...
    99+
    2023-10-21
    kafka
  • SpringBoot怎么集成P6Spy实现SQL日志
    本篇内容介绍了“SpringBoot怎么集成P6Spy实现SQL日志”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!P6Spy简介P6Spy是...
    99+
    2023-07-04
  • Docker容器日志怎么收集和管理
    Docker容器日志的收集和管理是非常重要的,可以帮助我们监控容器的运行状态、排查问题和进行性能分析。以下是一些常用的方法来收集和管...
    99+
    2024-04-02
  • springboot怎么利用@Aspect实现日志工具类
    这篇文章主要介绍了springboot怎么利用@Aspect实现日志工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么利用@Aspect实现日志工具类文章都会有所收获,下面我们一起来看...
    99+
    2023-06-29
  • 如何利用Redis和VB.NET实现实时日志收集功能
    如何利用Redis和VB.NET实现实时日志收集功能引言:在现代的软件开发和运维中,日志的重要性不言而喻。通过日志的收集和分析,我们可以了解系统的运行情况、检测问题和故障,从而帮助我们及时发现和解决潜在的风险。本文将介绍如何利用Redis和...
    99+
    2023-10-22
    redis 实时日志收集 VBNET
  • 怎么从远程Linux机器上收集日志
    本篇内容主要讲解“怎么从远程Linux机器上收集日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么从远程Linux机器上收集日志”吧!如果你的数据中心全是 Linux  服务器,而...
    99+
    2023-06-16
  • centos下怎么配置rsyslog日志收集服务器
    今天小编给大家分享一下centos下怎么配置rsyslog日志收集服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。rsy...
    99+
    2023-06-27
  • 使用Fluentd和MongoDB怎么构建一个日志收集系统
    使用Fluentd和MongoDB怎么构建一个日志收集系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  安装  为了完成相...
    99+
    2024-04-02
  • 基于Docker应用容器日志文件收集
    1 背景介绍中间件应用运行在Docker容器中能够感受到容器快速创建快速销毁确实带来了很大的便利性、灵活性。但由于Docker应用容器销毁不管人为操作,还是容器挂掉甚至容器应用导致其崩溃,它运行的数据都会随着它的生命周期结束而结束,这种情况...
    99+
    2023-06-04
  • 使用Fluentd和MongoDB构建日志收集系统
    Fluentd是一个日志收集系统,它的特点在于其各部分均是可定制化的,你可以通过简单的配置,将日志收集到不同的地方。本文要介绍的是在Fluentd的最新版中已经内置的MongoDB支持。主要通过一个收集Ap...
    99+
    2024-04-02
  • springboot怎么去除debug日志
    本文小编为大家详细介绍“springboot怎么去除debug日志”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot怎么去除debug日志”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。sprin...
    99+
    2023-07-02
  • 怎么利用mssql2k查询IIS日志
    本篇内容主要讲解“怎么利用mssql2k查询IIS日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用mssql2k查询IIS日志”吧!IIS日志格式默认...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作