{"id":19098425,"url":"https://github.com/jiannei/laravel-logger","last_synced_at":"2025-10-09T11:09:22.465Z","repository":{"id":46114029,"uuid":"317144680","full_name":"jiannei/laravel-logger","owner":"jiannei","description":"📝  Laravel  日志的扩展，更规范，更快速，更有效。","archived":false,"fork":false,"pushed_at":"2024-01-11T06:20:27.000Z","size":43,"stargazers_count":26,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-18T04:29:46.783Z","etag":null,"topics":["job-queue","laravel-log-viewer","laravel-logger","mongodb-driver","requestlogging","sqllog"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiannei.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-30T07:33:21.000Z","updated_at":"2024-12-05T13:12:08.000Z","dependencies_parsed_at":"2025-04-30T15:26:11.073Z","dependency_job_id":"e1218f50-40bd-44c2-b75d-2685ce7dc1ea","html_url":"https://github.com/jiannei/laravel-logger","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/jiannei/laravel-logger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiannei%2Flaravel-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiannei%2Flaravel-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiannei%2Flaravel-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiannei%2Flaravel-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiannei","download_url":"https://codeload.github.com/jiannei/laravel-logger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiannei%2Flaravel-logger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001290,"owners_count":26083058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["job-queue","laravel-log-viewer","laravel-logger","mongodb-driver","requestlogging","sqllog"],"created_at":"2024-11-09T03:45:39.359Z","updated_at":"2025-10-09T11:09:22.448Z","avatar_url":"https://github.com/jiannei.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e laravel-logger \u003c/h1\u003e\n\n![Test](https://github.com/Jiannei/laravel-logger/workflows/Test/badge.svg)\n[![StyleCI](https://github.styleci.io/repos/317144680/shield?branch=main)](https://github.styleci.io/repos/317144680?branch=main)\n[![Latest Stable Version](http://poser.pugx.org/jiannei/laravel-logger/v)](https://packagist.org/packages/jiannei/laravel-logger)\n[![Total Downloads](http://poser.pugx.org/jiannei/laravel-logger/downloads)](https://packagist.org/packages/jiannei/laravel-logger)\n[![Monthly Downloads](http://poser.pugx.org/jiannei/laravel-logger/d/monthly)](https://packagist.org/packages/jiannei/laravel-logger)\n[![Latest Unstable Version](http://poser.pugx.org/jiannei/laravel-logger/v/unstable)](https://packagist.org/packages/jiannei/laravel-logger)\n[![License](http://poser.pugx.org/jiannei/laravel-logger/license)](https://packagist.org/packages/jiannei/laravel-logger)\n\n## 社区讨论文章\n\n- [是时候使用 Lumen 8 + API Resource 开发项目了！](https://learnku.com/articles/45311)\n- [教你更优雅地写 API 之「路由设计」](https://learnku.com/articles/45526)\n- [教你更优雅地写 API 之「规范响应数据」](https://learnku.com/articles/52784)\n- [教你更优雅地写 API 之「枚举使用」](https://learnku.com/articles/53015)\n- [教你更优雅地写 API 之「记录日志」](https://learnku.com/articles/53669)\n- [教你更优雅地写 API 之「灵活地任务调度」](https://learnku.com/articles/58403)\n\n\n## 介绍\n\n`laravel-logger` 主要用来扩展项目中的日志记录，使调试更加方便。\n\n## 概览\n\n- 提供 `logger_async` 辅助函数，通过异步 Job 方式来记录日志；\n- 增加 RequestLog 中间件来记录 api 的请求和响应；对于单个请求关联 `UNIQUE_ID`，根据`UNIQUE_ID`可以跟踪请求执行过程\n- 适配 MongoDB 驱动，支持记录日志到 MongoDB；collection 支持按天、按月和按年拆分；(依赖 `mongodb/mongodb`或`jenssegers/mongodb`)\n- 提供 `LOG_QUERY`、`LOG_REQUEST` 配置参数来开启关闭 sql 日志和 request 日志\n\n## 安装\n\n```shell\n$ composer require jiannei/laravel-logger -vvv\n```\n\n## 配置\n\n复制配置项到 `config/logging.php`中，参考：https://github.com/Jiannei/lumen-api-starter/blob/master/config/logging.php\n\n### Laravel\n\n- 添加中间件 RequestLog 来记录 API 请求日志\n\n在 `app/Http/Kernel.php` 的 $middlewareGroups 中添加\n\n```php\nprotected $middlewareGroups = [\n    'api' =\u003e [\n        \\Jiannei\\Logger\\Laravel\\Http\\Middleware\\RequestLog::class,// 加在这个地方\n    ],\n];\n```\n\n-\n\n### Lumen\n\n- 加载配置\n\n```php\n// bootstrap/app.php\n$app-\u003econfigure('logging');\n```\n\n- 添加中间件\n\n```php\n$app-\u003emiddleware([\n    \\Jiannei\\Logger\\Laravel\\Http\\Middleware\\RequestLog::class,\n]);\n\n```\n\n- 注册服务容器\n\n```php\n$app-\u003eregister(\\Jiannei\\Logger\\Laravel\\Providers\\ServiceProvider::class);\n```\n\n### .env 中配置启用\n\n```php\nLOG_CHANNEL=mongo\nLOG_SLACK_WEBHOOK_URL=\nLOG_QUERY=true\nLOG_REQUEST=true\n\n# 如果使用的是 mongo channel 需要配置\nLOG_MONGODB_SEPARATE=daily\nLOG_MONGODB_LEVEL=debug\nLOG_MONGODB_HOST=127.0.0.1\nLOG_MONGODB_PORT=27017\nLOG_MONGODB_DATABASE=logs\nLOG_MONGODB_USERNAME=\nLOG_MONGODB_PASSWORD=\nLOG_MONGODB_AUTHENTICATION_DATABASE=admin\n```\n\n### 其他\n\n如果需要记录日志到 MongoDB，需要先安装并配置[laravel-mongodb](https://github.com/jenssegers/laravel-mongodb)\n\n## 如何使用\n\n可以参考 [lumen-api-starter](https://github.com/Jiannei/lumen-api-starter) 中的实际使用示例。\n\n### 使用\n\n- `app/Repositories/Enums/LogEnum.php` 中定义记录日志时的 message\n- 通过 logger_async 方法记录日志\n\n```php\nlogger_async(LogEnum::SYSTEM_SQL, $arrayData);\n```\n\n- 如果队列任务异步执行，则需要开启队列消费 `php artisan queue:work`\n\n- 记录到文件中的日志内容\n\n```\n[2021-01-18 12:03:36] local.DEBUG: System sql {\"database\":\"lumen-api\",\"duration\":\"11.08ms\",\"sql\":\"select `roles`.*, `model_has_roles`.`model_id` as `pivot_model_id`, `model_has_roles`.`role_id` as `pivot_role_id`, `model_has_roles`.`model_type` as `pivot_model_type` from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `model_has_roles`.`model_id` = '11' and `model_has_roles`.`model_type` = 'App\\\\\\\\Repositories\\\\\\\\Models\\\\\\\\User'\"} {\"url\":\"/users\",\"ip\":\"172.22.0.1\",\"http_method\":\"get\",\"server\":\"lumen-api.test\",\"referrer\":null,\"unique_id\":\"43f54ea9-4ad4-47cf-b9da-1d3aa150ff61\"}\n[2021-01-18 12:03:36] local.DEBUG: System request {\"request\":[],\"response\":{\"status\":\"success\",\"code\":200,\"message\":\"操作成功\",\"data\":{\"data\":[{\"id\":1,\"nickname\":\"Evert Stracke DVM\",\"email\":\"aufderhar.kaden@example.net\"},{\"id\":2,\"nickname\":\"Milton Toy\",\"email\":\"keagan.eichmann@example.org\"},{\"id\":3,\"nickname\":\"Mrs. Alyce O'Hara\",\"email\":\"cartwright.sidney@example.org\"},{\"id\":4,\"nickname\":\"Prof. Evalyn Windler I\",\"email\":\"bertram.bartoletti@example.org\"},{\"id\":5,\"nickname\":\"Brant Skiles\",\"email\":\"jane16@example.net\"},{\"id\":6,\"nickname\":\"Sage Rodriguez I\",\"email\":\"ryder50@example.org\"},{\"id\":7,\"nickname\":\"Ms. Angelica Wiegand DVM\",\"email\":\"kaelyn.mueller@example.net\"},{\"id\":8,\"nickname\":\"Newton Zieme\",\"email\":\"sipes.kip@example.com\"},{\"id\":9,\"nickname\":\"Natalia Ruecker\",\"email\":\"stroman.kiley@example.com\"},{\"id\":10,\"nickname\":\"Hallie Parisian\",\"email\":\"rosina74@example.net\"},{\"id\":11,\"nickname\":\"Jiannei\",\"email\":\"longjian.huang@foxmail.com\"}],\"meta\":{\"pagination\":{\"total\":11,\"count\":11,\"per_page\":15,\"current_page\":1,\"total_pages\":1,\"links\":[]}}},\"error\":[]},\"start\":1610942614.450748,\"end\":1610942615.785696,\"duration\":\"1.33s\"} {\"url\":\"/users\",\"ip\":\"172.22.0.1\",\"http_method\":\"GET\",\"server\":\"lumen-api.test\",\"referrer\":null,\"unique_id\":\"43f54ea9-4ad4-47cf-b9da-1d3aa150ff61\"}\n```\n\n- 记录到 Mongodb 的日志内容\n\n```\n/* 1 */\n{\n    \"_id\" : ObjectId(\"60050999ee7d025d4c62c8c2\"),\n    \"message\" : \"System sql\",\n    \"context\" : {\n        \"database\" : \"lumen-api\",\n        \"duration\" : \"54.19ms\",\n        \"sql\" : \"select count(*) as aggregate from `users`\"\n    },\n    \"level\" : 100,\n    \"level_name\" : \"DEBUG\",\n    \"channel\" : \"mongo\",\n    \"datetime\" : ISODate(\"2021-01-18T12:07:53.410+08:00\"),\n    \"extra\" : {\n        \"url\" : \"/users\",\n        \"ip\" : \"172.22.0.1\",\n        \"http_method\" : \"get\",\n        \"server\" : \"lumen-api.test\",\n        \"referrer\" : null,\n        \"unique_id\" : \"0cda1927-bf14-4acf-88e8-1d9ed67170b5\"\n    }\n}\n\n/* 2 */\n{\n    \"_id\" : ObjectId(\"60050999ee7d025d4c62c8c3\"),\n    \"message\" : \"System sql\",\n    \"context\" : {\n        \"database\" : \"lumen-api\",\n        \"duration\" : \"2.42ms\",\n        \"sql\" : \"select * from `users` limit 15 offset 0\"\n    },\n    \"level\" : 100,\n    \"level_name\" : \"DEBUG\",\n    \"channel\" : \"mongo\",\n    \"datetime\" : ISODate(\"2021-01-18T12:07:53.500+08:00\"),\n    \"extra\" : {\n        \"url\" : \"/users\",\n        \"ip\" : \"172.22.0.1\",\n        \"http_method\" : \"get\",\n        \"server\" : \"lumen-api.test\",\n        \"referrer\" : null,\n        \"unique_id\" : \"0cda1927-bf14-4acf-88e8-1d9ed67170b5\"\n    }\n}\n```\n\n## 特别说明\n\n- SQL 日志记录参考：[laravel-query-logger](https://github.com/overtrue/laravel-query-logger)\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiannei%2Flaravel-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiannei%2Flaravel-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiannei%2Flaravel-logger/lists"}