{"id":20229992,"url":"https://github.com/kasianov-mikhail/scout","last_synced_at":"2025-10-26T04:38:50.234Z","repository":{"id":262368550,"uuid":"887033010","full_name":"kasianov-mikhail/scout","owner":"kasianov-mikhail","description":"CloudKit as a Log Storage","archived":false,"fork":false,"pushed_at":"2025-01-13T18:40:58.000Z","size":102,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-13T19:37:56.773Z","etag":null,"topics":["analytics","cloudkit","monitoring","performance","swift","swift-logging","swift-metrics","swift-package-manager","swift-testing","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kasianov-mikhail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-11-12T03:41:39.000Z","updated_at":"2025-01-05T17:08:46.000Z","dependencies_parsed_at":"2024-11-12T04:17:30.583Z","dependency_job_id":"f67be9ab-a034-4f90-aa1b-8d2cdfec3cb0","html_url":"https://github.com/kasianov-mikhail/scout","commit_stats":null,"previous_names":["kasianov-mikhail/scout"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasianov-mikhail%2Fscout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasianov-mikhail%2Fscout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasianov-mikhail%2Fscout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasianov-mikhail%2Fscout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasianov-mikhail","download_url":"https://codeload.github.com/kasianov-mikhail/scout/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233801626,"owners_count":18732524,"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","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":["analytics","cloudkit","monitoring","performance","swift","swift-logging","swift-metrics","swift-package-manager","swift-testing","swiftui"],"created_at":"2024-11-14T07:37:48.541Z","updated_at":"2025-09-22T04:33:15.752Z","avatar_url":"https://github.com/kasianov-mikhail.png","language":"Swift","funding_links":[],"categories":["Libs","Data and Storage"],"sub_categories":["Analytics"],"readme":"\u003cimg width=\"1371\" alt=\"logo\" src=\"https://github.com/user-attachments/assets/9e27f4e8-603b-4ec5-b0b0-e3d2f8d0d8d9\"\u003e\n\n## Description\nScout is a robust logging framework designed to provide comprehensive logging capabilities for your applications. It supports various logging levels, output formats, and destinations, making it easy to integrate and customize according to your needs. Whether you are developing a small project or a large-scale system, Scout ensures that you have detailed and organized logs to help you monitor and debug your applications effectively.\n\n## Table of Contents\n- [CloudKit Integration](#cloudkit-integration)\n- [Logging \u0026 Metrics](#logging--metrics)\n- [Installation](#installation)\n- [Visualizing the Logs](#visualizing-the-logs)\n- [Example Project](#example-project)\n- [License](#license)\n\n## CloudKit Integration\nScout offers seamless integration with [CloudKit](https://developer.apple.com/icloud/cloudkit/), allowing you to store and manage your logs in the cloud effortlessly. By leveraging [CloudKit](https://developer.apple.com/icloud/cloudkit/), you can:\n\n- **📊 Centralize Logs**: Store logs from multiple devices and applications in a single, centralized location.\n- **⏱️ Real-time Access**: Access your logs in real-time from anywhere, ensuring you can monitor your applications' performance and issues promptly.\n- **📈 Scalability**: Benefit from [CloudKit](https://developer.apple.com/icloud/cloudkit/)'s scalability to handle large volumes of log data without compromising performance.\n- **🔒 Security**: Ensure your logs are securely stored and transmitted, adhering to industry-standard security practices.\n\n## Logging \u0026 Metrics\nScout builds on Apple’s observability facades:\n- [swift-log](https://github.com/apple/swift-log) for structured logging\n- [swift-metrics](https://github.com/apple/swift-metrics) for counters, gauges, and timers\n\nBenefits:\n- **📏 Standardization**: Use unified, community-adopted APIs for logs and metrics.\n- **🔧 Flexibility**: Customize log handlers and formats to suit your specific needs.\n- **🔍 Correlation**: Share labels/metadata to jump from a metric spike to the exact log events.\n- **⚡ Insight + Performance**: Keep metrics lightweight on hot paths; use logs for rich context when needed.\n\nTogether, logs answer “what happened?” while metrics quantify “how often?” and “how fast?”.\n\n## Installation\nFor detailed installation instructions, please refer to the [Installation Guide](https://github.com/kasianov-mikhail/scout/wiki).\n\n## Usage\n\n```swift\nimport Logging\n\nlet logger = Logger(label: \"SOME_LOGGER_LABEL\")\n\nlogger.warning(\n    \"event_to_know_about\",\n    metadata: [\n        \"description\": .string(error.localizedDescription),\n        \"ip\": .string(ip),\n    ]\n)\n```\n\n## Visualizing the Logs\n\nBy integrating `HomeView` into your SwiftUI application, you can gain insights into your application's performance and issues through an intuitive and interactive interface. \n```swift\nHomeView(container: container)\n```\n\u003e This should be done only in debug mode to avoid exposing sensitive log data in production environments.\n\n| | | |\n| ------------- | ------------- | ------------- |\n| ![](https://github.com/user-attachments/assets/a7cf7126-d995-4fa8-a148-20670b1260f6)  | ![](https://github.com/user-attachments/assets/c84c0051-5dea-4669-9bd1-bc9bb9f7d321)  | ![](https://github.com/user-attachments/assets/2e88e5c2-11ef-4fa5-bdb1-9217ca8d869a)  |\n\n## Example Project\n\nYou can find an example project demonstrating the integration of Scout with CloudKit in the [Scout IP repository](https://github.com/kasianov-mikhail/scout-ip). This project provides a comprehensive example of how to set up and use Scout for logging in a real-world application.\n\n## License\nScout is released under the MIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasianov-mikhail%2Fscout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasianov-mikhail%2Fscout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasianov-mikhail%2Fscout/lists"}