使用 Loki、Loki4j、Grafana 和 Spring Boot 搭建一个轻量级、简单、易用的 Java 日志系统

要使用 LokiLoki4jGrafanaSpring Boot 搭建一个轻量级、简单、易用的 Java 日志系统,您可以按以下步骤进行。这个系统将利用 Loki 作为日志存储和聚合系统,Loki4j 作为 Java 的日志插件,Grafana 用于日志的可视化。

1.工具介绍:

  1. Loki:类似于 Prometheus 的日志系统,但 Loki 并不索引日志的内容,而是通过标签(label)进行索引,使用 PromQL 进行查询,轻量级且高效。
  2. Loki4j:一个适用于 Java 项目的日志库,可以将 Spring Boot 项目的日志直接推送到 Loki。
  3. Grafana:用于可视化 Loki 中存储的日志,并提供查询、分析和展示日志的功能。
  4. Spring Boot:作为 Java 应用框架,用于生成日志并集成 Loki4j 进行日志传输。

2.系统架构:

  • Spring Boot 应用程序通过 Loki4j 生成和发送日志。
  • Loki 作为日志聚合和存储系统接收日志。
  • Grafana 用于展示和可视化 Loki 中存储的日志。

3. 使用步骤

3.1.步骤 1:搭建 Loki 和 Grafana

可以通过 Docker 容器运行 Loki 和 Grafana,以便简化配置。

3.1.1.准备Loki和Grafanan的镜像

配置docker-compose.yml信息

version: '3.0'
services:
  loki:
    image: loki:latest
    container_name: base_software_loki
    ports:
      - "3100:3100"
    networks:
      - monitoring

  grafana:
    image: grafana:latest
    container_name: base_software_grafana
    ports:
      - "3200:3000"
    networks:
      - monitoring
    depends_on:
      - loki
volumes:
  es_data:
    driver: local

networks:
  monitoring:
    driver: bridge

3.1.2 创建两个容器

docker-compose up -d

启动后,可以通过浏览器访问 http://localhost:3000,默认的用户名和密码均为 admin

3.1.3 配置 Grafana 数据源

  1. 登录 Grafana。
  2. 添加 Loki 作为数据源:
    • 进入 Configuration > Data Sources
    • 点击 Add data source,选择 Loki
    • 在 URL 中填写 http://127.0.0.1:3100
    • 保存并测试连接。

在这里插入图片描述

3.2.步骤 2:配置 Spring Boot 项目

在 Spring Boot 项目中使用 Loki4j 来将日志发送到 Loki。

3.2.1 添加依赖

在 Spring Boot 的 pom.xml 文件中添加 Loki4j 依赖:

<dependency>  
    <groupId>com.github.loki4j</groupId>  
    <artifactId>loki-logback-appender-jdk8</artifactId>  
    <version>1.4.2</version>  
</dependency>

3.2.2 配置 logback-spring.xml

Loki4j 使用 Logback 作为日志框架。你需要配置 src/main/resources/logback-spring.xml 文件来使用 Loki4j 将日志发送到 Loki:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 彩色控制台控制 -->
    <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
    <substitutionProperty name="log.pattern.no" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <springProperty scope="context" name="LOG_FILE_DIR" source="loki.log-file-dir" defaultValue="log"/>
    <!-- 控制台输出 -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
  
    <springProp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九又四分之三站台Emm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值