# Logan [![license](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat)](https://raw.githubusercontent.com/Meituan-Dianping/Logan/master/LICENSE) [![Release Version](https://img.shields.io/github/release/Meituan-Dianping/Logan.svg?maxAge=2592000?style=flat-square)](https://github.com/Meituan-Dianping/Logan/releases) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Meituan-Dianping/Logan/pulls) [![Platform Support](https://img.shields.io/badge/Platform-%20iOS%20%7C%20Android%20-brightgreen.svg)](https://github.com/Meituan-Dianping/Logan/wiki) Logan 是美团点评集团推出的大前端日志系统。名称是 Log 和 An 的组合,代表个体日志服务,同时也是金刚狼大叔的大名。 # 总览 Logan 开源的是一整套日志体系,包括日志的收集存储,上报分析以及可视化展示。我们提供了五个组件,包括端上日志收集存储 、[iOS SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/iOS)、[Android SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Example/Logan-Android)、[Web SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/WebSDK),后端日志存储分析 [Server](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/Server),日志分析平台 [LoganSite](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/LoganSite)。并且提供了一个 Flutter 插件[Flutter 插件](https://github.com/Meituan-Dianping/Logan/tree/master/Flutter) **整体架构** ![Logan](https://mss-shon.sankuai.com/v1/mss_7d6cd84b52d543248bbb734abd392e9a/logan-open-source/logan_arch.png) # 效果演示 **日志筛选** ![Logan](./img/logan_list_filter.gif) **日志详情** ![Logan](./img/logan_detail.gif) # 快速开始 ## iOS ### 环境要求 以下是可以稳定跑起来的iOS配置,系统和xcode版本略大于或小于下面的版本理论上也是可以跑起来的。 ``` macOS: 10.15.8 Xcode: 11.2 Cocoapods: 1.8.4 iOS: >= 8.0 ``` ### 安装 SDK 在你的Xcode工程根目录新建Podfile文件,并在文件中添加如下配置 ``` source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TargetName' do pod 'Logan', '~> 1.2.5' end ``` 最后在项目根目录运行以下命令: ``` pod install ``` ### iOS SDK 接入文档 [iOS SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/iOS) ## Android ``` NDK: r16b CMake: >= 3.4.1 Jdk: 1.7 或 1.8(推荐) ``` ### Android SDK 接入文档 [Android SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Example/Logan-Android) ## Web SDK 可在 Web 平台( H5 或 PC 环境)上运行的 Logan 组件,实现前端日志的本地存储与上报功能。 ### 接入方式 下载 npm 包 ``` npm install --save logan-web ``` 或者 ``` yarn add logan-web ``` ### 简单上手 #### 日志存储 ```js import Logan from 'logan-web'; let logContent = 'Your log content'; let logType = 1; Logan.log(logContent, logType); ``` #### 日志上报 ```js import Logan from 'logan-web'; const reportResult = await Logan.report({ reportUrl: 'https://yourServerAddressToAcceptLogs', deviceId: 'LocalDeviceIdOrUnionId', fromDayString: '2019-11-06', toDayString: '2019-11-07' }); ``` ### Web SDK 接入文档 [Web SDK](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/WebSDK) ## Server ### Server 接入文档 [Server](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/Server) ## LoganSite ### 环境要求 ``` Node: ^10.15.3 yarn: ^1.15.2 或 npm ^6.12.0 ``` ### 安装 #### 本地运行 首先,clone仓库到本地。 在LoganSite根目录下创建文件`.env.development`,并在其中指定`API_BASE_URL`环境变量指向: ```bash API_BASE_URL=http://location/to/your/server:port ``` 然后执行以下命令: ``` $ cd $LOGAN_SITE $ npm install $ npm run start ``` 或 ``` $ cd $LOGAN_SITE $ yarn $ yarn start ``` #### 构建 首先,clone仓库到本地。 将 LoganSite/src/common/api.js 中第四行 ```javascript const BASE_URL = process.defineEnv.API_BASE_URL; ``` 中 BASE_URL 指向的部分替换成后端服务部署的地址: ```javascript const BASE_URL = "http://location/to/your/server:port" ``` 然后执行以下命令: ``` $ cd $LOGAN_SITE $ npm install $ npm run build ``` 或 ``` $ cd $LOGAN_SITE $ yarn $ yarn build ``` ### LoganSite 接入文档 [LoganSite](https://github.com/Meituan-Dianping/Logan/tree/master/Logan/LoganSite) # 最佳实践 在Logan面世之前,日志系统是相对分散的。 ![Before_Logan](https://mss-shon.sankuai.com/v1/mss_7d6cd84b52d543248bbb734abd392e9a/logan-open-source/before_logan.png) 不同业务团队各自记录自己的日志,分析问题时再分别收集不同业务团队的日志进行整合,不同团队日志实现方式不同,获取日志的时间周期也不同,使得问题排查效率缓慢。Logan的思路是所有端上日志集中处理,按照不同的type进行区分,分析问题时可以随意聚合,有效提高日志分析效率。 Logan核心体系由四大模块构成: - 日志输入 - 日志存储 - 后端系统 - 前端系统 ![Logan_Process](https://mss-shon.sankuai.com/v1/mss_7d6cd84b52d543248bbb734abd392e9a/logan-open-source/logan_process.png) 新的日志分析流程如下: ![Logan_Case](https://mss-shon.sankuai.com/v1/mss_7d6cd84b52d543248bbb734abd392e9a/logan-open-source/logan_case.png) # 未来 未来我们会提供基于Logan大数据的数据平台,包含机器学习、疑难日志解决方案、大数据特征分析等高级功能。 最后,我们希望提供更加完整的一体化个案分析生态系统。 ![Logan_System](https://mss-shon.sankuai.com/v1/mss_7d6cd84b52d543248bbb734abd392e9a/logan-open-source/logan_system.png) Module | Open Source | Processing | Planning :-: | :-: | :-: | :-: iOS & macOS | √ | | | Android | √| | | Web | √ | | | Back End | √| | | Front End | √ | | | Mini Programs | | √ | | # 贡献 **关于贡献PRs和issue的更多信息,请参考[贡献指南](./CONTRIBUTING.md)** # 作者 ## 客户端 * **白帆** - [baitian0521](https://github.com/baitian0521) * **曹立成** - [Richard-Cao](https://github.com/Richard-Cao) * **姜腾** - [jiangteng](https://github.com/jiangteng) * **杨向南** - [yangxiangnan](https://github.com/yangxiangnan) * **马小军** - [Mr-xiaojun](https://github.com/Mr-xiaojun) * **罗恒** - [luoheng158](https://github.com/luoheng158) ## Web端 * **孙懿** - [sylvia1106](https://github.com/sylvia1106) * **余若晟** - [Retrospection](https://github.com/Retrospection) ## 服务端 * **贺院超** - [he-yuanchao](https://github.com/he-yuanchao) * **罗志林** - [zlLuo](https://github.com/zlLuo) [贡献者列表](https://github.com/Meituan-Dianping/Logan/graphs/contributors) # 联系我们 添加美团小助手微信,会帮助拉入 Logan 微信技术交流群: MTDPtech、MTDPtech01、MTDPtech03 # License Logan项目采用MIT许可协议 - 详细内容请查看[LICENSE](https://github.com/Meituan-Dianping/Logan/blob/master/LICENSE)。 # 相关文章 [美团点评移动端基础日志库 — Logan](https://tech.meituan.com/Logan.html) [Logan:美团点评的开源移动端基础日志库](https://tech.meituan.com/logan_open_source.html) [美团开源 Logan Web:前端日志在 Web 端的实现](https://tech.meituan.com/2020/01/09/meituan-logan.html) # 相关知识 - [mbedtls](https://github.com/ARMmbed/mbedtls) - [cJSON](https://github.com/DaveGamble/cJSON)