Docker 部署 plumelog 最新版本 实现日志采集

发布于:2025-02-11 ⋅ 阅读:(97) ⋅ 点赞:(0)

1.配置plumelog.yml

version: '3'
services:
  plumelog:
    #此镜像是基于plumelog-3.5.3版本
    image: registry.cn-hangzhou.aliyuncs.com/k8s-xiyan/plumelog:3.5.3
    container_name: plumelog
    ports:
      - "8891:8891"
    environment:
      plumelog.model: redis
      plumelog.queue.redis.redisHost: redis:6379
      plumelog.queue.redis.redisPassWord: W0CNwUW12eZe3sXynXSXIuqYpH3MBh7n
      plumelog.queue.redis.redisDb: 15
      plumelog.es.esHosts: elasticsearch:9200
      #日志保留天数,配置0或者不配置默认永久保留
      admin.log.keepDays: 7
      #链路保留天数,配置0或者不配置默认永久保留
      admin.log.trace.keepDays: 7
      #plumelog-ui的地址 如果不配置,报警信息里不可以点连接
      plumelog.ui.url: http://172.16.2.43:8891
      #管理密码,手动删除日志的时候需要输入的密码
      admin.password: 123456
      #登录配置,配置后会有登录界面
      login.username: admin
      login.password: admin

2.执行

docker-compose -f plumelog.yml up -d

3.JAVA整合

      <dependency>
            <groupId>com.plumelog</groupId>
            <artifactId>plumelog-logback</artifactId>
            <version>3.5.3</version>
        </dependency>

4.bootstrap.yml 配置

plumelog:
  env: dev
  redis-host: 172.16.2.43:6379
  redis-auth: W0CNwUW12eZe3sXynXSXIuqYpH3MBh7n

5.logback-spring.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径${LOG_PATH}为logging.file.path: logs/${spring.application.name} -->
    <property name="log.path" value="/opt/service/logs/portrait-model"/>
    <!-- 日志输出格式 -->
    <property name="log.pattern"
              value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level [%thread][%X{traceId}][%X{requestUser}][%X{requestUrl}] %logger{40}:%L - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>512MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>


        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>512MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 环境配置 -->
    <springProperty scope="context" name="plumelog.appName" source="spring.application.name"/>
    <springProperty scope="context" name="plumelog.redisHost" source="plumelog.redis-host"/>
    <springProperty scope="context" name="plumelog.redisAuth" source="plumelog.redis-auth"/>
    <springProperty scope="context" name="plumelog.env" source="plumelog.env"/>
    <!-- 输出plumelog -->
    <appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
        <appName>${plumelog.appName}</appName>
        <redisHost>${plumelog.redisHost}</redisHost>
        <redisAuth>${plumelog.redisAuth}</redisAuth>
        <redisDb>15</redisDb>
        <env>${plumelog.env}</env>
    </appender>

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
        <!-- 输出plumelog -->
        <appender-ref ref="plumelog"/>
    </root>

    <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
    <!-- 系统模块日志级别控制  -->
    <logger name="com.qxsk" level="info"/>
    <logger name="org.apache" level="INFO"/>
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="info"/>
</configuration>

6.浏览器访问

在这里插入图片描述