一个golang实现的日志中心glogcenter,简称GLC
Go to file
2022-07-07 21:54:17 +08:00
glc 日志仓删除功能 2022-07-07 21:54:17 +08:00
.gitignore Web前端检索,适当重构 2022-06-30 19:42:12 +08:00
LICENSE LGPL-3.0 license 2022-06-22 20:38:58 +08:00
README.md badge 2022-07-06 12:49:22 +08:00

缘起

日志中心,一直是用传统三件套,打开速度不理想,资源占用太厉害,常闹脾气,替代品总是找不到。终于忍不住用go试写一个logcenter,结果确实是惊艳到自己了,故起名glogcenter,简称GLC,开仓建库

Docker Pulls

特点

  • 使用golang实现,就是快
  • 借助goleveldb做数据保存,结合日志写多读少特点稍加设计,真是快
  • 日志量虽大,却是真心节省内存资源
  • 常用的无条件查询最新日志,快到麻木无感
  • 关键词全文检索,支持中文分词,毫秒级查询响应,快到麻木无感
  • 日志吞食量每秒近万条,建索引速度每秒数千条,闲时建索引充分利用资源
  • 提供docker镜像支持容器化部署,方便之极
  • 提供java项目日志收集包,日志都发来发来发来
  • 支持从RabbitMQ收取日志信息
  • 内置提供简洁的日志查询界面

docker运行

// 简单示例
docker run -d -p 8080:8080 gotoeasy/glc

// 外挂数据目录
docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc

服务接口

  • /glc/v1/log/add日志添加,提交json数据方式,字段system是分类,date是日期时间,text是日志内容
  • /glc/v1/log/search日志查询,检索条件字段searchKey

使用logbackjava项目,支持日志收集

<!-- pom坐标 -->
<dependency>
    <groupId>top.gotoeasy</groupId>
    <artifactId>glc-logback-appender</artifactId>
    <version>0.4.0</version>
</dependency>
<!-- logback配置例子1发送至 glogcenter -->
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcHttpJsonAppender">
    <glcApiUrl>http://127.0.0.1:8080/glc/v1/log/add</glcApiUrl> <!-- 可通过环境变量 GLC_API_URL 设定 -->
    <glcApiKey>X-GLC-AUTH:glogcenter</glcApiKey>                <!-- 可通过环境变量 GLC_API_KEY 设定 -->
    <system>Demo</glcApiKey>                                    <!-- 可通过环境变量 GLC_SYSTEM 设定 -->
    <layout>
        <pattern><![CDATA[%p %m %n]]></pattern>
    </layout>
</appender>

<!-- logback配置例子2发送至 rabbitmq -->
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcAmqpAppender">
    <amqpHost>127.0.0.1</amqpHost>                <!-- 可通过环境变量 GLC_AMQP_HOST 设定 -->
    <amqpPort>5672</amqpPort>                     <!-- 可通过环境变量 GLC_AMQP_PORT 设定 -->
    <amqpUser>rabbitmqUsername</amqpUser>         <!-- 可通过环境变量 GLC_AMQP_USER 设定 -->
    <amqpPassword>rabbitmqPassword</amqpPassword> <!-- 可通过环境变量 GLC_AMQP_PASSWORD 设定 -->
    <system>Demo</glcApiKey>                      <!-- 可通过环境变量 GLC_SYSTEM 设定 -->
    <layout>
        <pattern><![CDATA[%p %m %n]]></pattern>
    </layout>
</appender>

TODO

  • 日志分仓,可维护
  • 查询界面优化
  • 国际化多语言

更新履历

进行中的开发版本latest

  • 添加相应版本的maven公共仓库包,java项目日志可推至RabbitMQ
  • 添加RabbitMQ简单模式消费者,开启后能从RabbitMQ获取日志
  • 添加服务接口/glc/v1/log/add,接收JSON格式日志以便后续扩展

版本0.3.0

  • 全面重构,不考虑旧版兼容
  • 控制索引文件数,避免大量日志时打开文件过多而崩溃
  • 降低索引文件的磁盘空间占用,优化索引创建速度
  • 检索页面,显示更友好的查询结果提示
  • glc-logback-appender的设定,可通过配置环境变量来覆盖

版本0.2.0

  • DIY了一个logo
  • 接口/glc/add添加system参数
  • 提供简洁的日志查询界面
  • 当前版设计为接收多个项目的日志,界面栏目为分类

初版0.1.0

  • 使用golang实现,就是快
  • 借助goleveldb做数据保存,结合日志写多读少特点稍加设计,真是快
  • 日志量虽大,却是真心节省内存资源
  • 常用的无条件查询最新日志,快到麻木无感
  • 关键词全文检索,支持中文分词,反向索引以空间换时间,快到麻木无感
  • 提供docker镜像支持容器化部署,方便之极
  • 提供java项目日志收集包,日志都发来发来发来
  • 服务接口/glc/add添加日志
  • 服务接口/glc/search查询日志