# easy_log **Repository Path**: yufc/easy_log ## Basic Information - **Project Name**: easy_log - **Description**: 一个java分布式日志组件,支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,在分布式系统中也可以查询关联日志,能够帮助快速定位问题,简单易用,没有代码入侵,查询界面友好,高效,方便,只要你是java系统,不要做任何项目改造,接入直接使用,日志不落本地磁盘,无需关心日志占用应用服务器磁盘问题,后期项目(2.0版本)加入分布式链路追踪功能 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/easy_log - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1370 - **Created**: 2020-05-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy_log 一个简单易用的分布式日志组件 ### 1.系统介绍 1. 无入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志 2. 基于elasticsearch作为查询引擎 3. 高吞吐,查询效率高 4. 全程日志不落磁盘,免维护 5. 无需修改老项目,引入直接使用 ### 2.架构 * easy_log_core 核心组件包含日志搜集端,负责搜集日志并推送到kafka,redis等队列 * easy_log_server 负责把队列中的日志日志异步写入到elasticsearch * easy_log_ui 前端展示,日志查询界面 * easy_log_demo 基于springboot的使用案例 ### 3.系统流程 1. easy_log_core 搜集日志发送到=>kafka或者redis 2. easy_log_server kafka或者redis=>elasticsearch ### 4.使用方法 1. 打包 * maven install -DskipTests 打包 * 到easy_log_core,easy_log_log4j,easy_log_log4j2,easy_log_logback四个目录下 执行maven deploy 上传包到自己的私服 私服地址到easy_log目录的pom.xml改 UTF-8 http://172.16.249.94:4000 2. 配置 (1)如果用log4j,引入 com.beeplay easy_log_log4j 1.0 配置log4j配置文件,增加下面这个Appender kafka做为中间件 log4j.appender.L=com.beeplay.easylog.core.appender.KafkaAppender #appName系统的名称(自己定义就好) log4j.appender.L.appName=easyjob log4j.appender.L.kafkaHosts=172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092 #topic(kafka的topic)这里面要和easy_log_server中的一致 log4j.appender.L.topic=beeplay_log_list redis做为中间件 log4j.appender.L=com.beeplay.easylog.log4j.appender.RedisAppender log4j.appender.L.appName=easyjob log4j.appender.L.reidsHost=172.16.249.72 log4j.appender.L.redisPort=6379 log4j.appender.L.redisAuth= log4j.appender.L.redisKey=beeplay_log_list 同理如果使用logback,和log4j2配置如下 这里注意:spring boot项目默认用的logback;easy_log_search里面有基于springboot的使用demo #### 【dubbo rpc 跨服务传送trace_id 可以参考 easy_log_dubbo】 #### logback * 引入 com.beeplay easy_log_logback 1.0 * 配置 easylog 172.16.249.72 6379 beeplay_log_list easylog 172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092 beeplay_log_list #### log4j2 * 引入 com.beeplay easy_log_logBack 1.0 * 配置 3. 示例代码 import com.beeplay.easylog.core.TransId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.UUID; public class LogTest { private static Logger logger=LoggerFactory.getLogger(LogTest.class); public static void main( String[] args ) { TraceId.logTraceID.set(UUID.randomUUID().toString()); logger.info("{}","I am log name:"+UUID.randomUUID().toString()); logger.info("{}","I am log name:"+UUID.randomUUID().toString()); } } 4. 启动服务 * 步骤一打包完的 启动 easy_log_server-1.0.jar 注意:打完的包target目录下,lib文件夹(依赖包目录),config文件夹(两个配置文件的目录),easy_log_server-1.0.jar 放到同一个目录下 * easy_log_server中easylog.properties详解 easylog.server.model=kafka #kafka集群地址 easylog.server.host.kafkaHosts=172.16.247.143:9092,172.16.247.60:9092,172.16.247.64:9092 #elasticsearch集群地址 easylog.server.host.esHosts=172.16.251.196:9200 easylog.server.maxSendSize=100 #log的key名称,如果用的kafka就是kafka的topic easylog.server.logkey=beeplay_log_list * 查询界面 1.到easy_log_ui界面下,进入src目录 修改配置文件 config.json 注意:需要自行安装nodejs环境 { "api": "http://localhost:8989/",//node服务地址 "es": "http://172.16.251.196:9200/", //es地址 "prefix": "beeplay_log_",//es索引前缀 "port" : 8989 //端口号,和上面api端口号 } 2.运行 npm run build 打包 3.dist为打包后的目录,进入这个目录运行 node app 4.http://你的部署服务器地址:8989 访问前端 备注:也可以用kibanna ### 5.后续版本计划 2.0版本将会增加全链路追踪功能,目前正在开发当中,UI界面也会优化 ### 6.联系交流 * 有问题在留言区留言,会在第一时间内回复 * 欢迎有兴趣的一起加入研究 ### 7.测试地址 * 查询界面地址:https://easylog-demo.beeplaying.com * 访问这个地址产生测试log数据:https://easylog-demo.beeplaying.com/demo/index?data=1234 data参数自己随便传,传什么打印什么