{"id":31449358,"url":"https://github.com/howbizarre/hows-logger","last_synced_at":"2025-10-01T03:48:04.656Z","repository":{"id":317397249,"uuid":"1067235900","full_name":"howbizarre/hows-logger","owner":"howbizarre","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-30T15:23:26.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-30T17:36:57.204Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/howbizarre.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-30T15:08:17.000Z","updated_at":"2025-09-30T15:23:25.000Z","dependencies_parsed_at":"2025-09-30T17:37:57.732Z","dependency_job_id":"54b51606-c519-4644-a180-6601ce945c71","html_url":"https://github.com/howbizarre/hows-logger","commit_stats":null,"previous_names":["howbizarre/hows-logger"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/howbizarre/hows-logger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howbizarre%2Fhows-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howbizarre%2Fhows-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howbizarre%2Fhows-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howbizarre%2Fhows-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/howbizarre","download_url":"https://codeload.github.com/howbizarre/hows-logger/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howbizarre%2Fhows-logger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277791706,"owners_count":25877716,"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-01T02:00:09.286Z","response_time":88,"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":[],"created_at":"2025-10-01T03:48:03.143Z","updated_at":"2025-10-01T03:48:04.649Z","avatar_url":"https://github.com/howbizarre.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hows Logger - Cloudflare Tail Worker\n\nТози Tail Worker събира логове от другите ви Cloudflare Workers приложения.\n\n## Функционалност\n\nTail Worker-ът автоматично:\n- Събира всички логове (console.log, console.error и т.н.)\n- Записва изключения и грешки\n- Логва diagnostic channel events\n- Форматира всички данни в структуриран JSON формат\n- Добавя timestamp и metadata към всеки запис\n\n## Типове логове\n\nWorker-ът обработва следните типове данни:\n- **logs**: Стандартни логове от console.log/error/warn\n- **exceptions**: JavaScript грешки и изключения\n- **diagnostics**: Diagnostic channel events\n- **event_info**: Информация за HTTP заявки и други събития\n\n## Конфигурация\n\n### wrangler.jsonc\n```jsonc\n{\n  \"name\": \"hows-logger\",\n  \"main\": \"src/index.ts\",\n  \"compatibility_date\": \"2025-09-27\",\n  \"observability\": { \n    \"enabled\": true \n  },\n  \"logpush\": false\n}\n```\n\n## Използване\n\n### Метод 1: С npm скриптове (PowerShell/CMD)\n```bash\n# Разработка\nnpm run dev\n\n# Деплойване\nnpm run deploy\n\n# Проверка на типове\nnpx tsc --noEmit\n```\n\n### Метод 2: С batch файл (CMD - препоръчително за Windows)\n```cmd\n# Разработка\nrun.bat dev\n\n# Деплойване  \nrun.bat deploy\n\n# Проверка на TypeScript\nrun.bat check\n\n# Помощ\nrun.bat\n```\n\n### Метод 3: Директно с CMD\n```cmd\n# Разработка\ncmd /c \"cd /d d:\\Dev\\OTHER\\hows-logger \u0026\u0026 npm run dev\"\n\n# Деплойване\ncmd /c \"cd /d d:\\Dev\\OTHER\\hows-logger \u0026\u0026 npm run deploy\"\n```\n\n### 3. Конфигуриране на други Workers\n\nЗа да свържете други Workers към този tail worker, добавете в тяхната `wrangler.toml` конфигурация:\n\n```toml\n[observability]\nenabled = true\n\n# За конкретен tail worker\n[tail_consumers]\nservices = [\"hows-logger\"]\n```\n\nИли използвайте Cloudflare Dashboard:\n1. Отидете в Workers \u0026 Pages\n2. Изберете worker-а, който искате да наблюдавате\n3. Settings \u003e Observability \u003e Real-time Logs\n4. Добавете `hows-logger` като tail consumer\n\n## Структура на логовете\n\nВсеки лог запис съдържа:\n\n```json\n{\n  \"type\": \"log|exception|diagnostic|event_info\",\n  \"timestamp\": \"2025-09-30T15:30:00.000Z\",\n  \"scriptName\": \"my-worker\",\n  \"level\": \"log|error|warn|info\",\n  \"message\": \"съдържанието на лога\",\n  \"outcome\": \"ok|exception|canceled\",\n  \"channel\": \"diagnostic-channel-name\" // само за diagnostic events\n}\n```\n\n## Персистентност\n\nВ момента логовете се изписват в конзолата. За продукционна употреба можете да:\n\n1. **Analytics Engine**: Добавете логовете към Analytics Engine за анализ\n2. **Durable Objects**: Съхранявайте логове за по-дълъг период\n3. **KV**: Временно съхранение за кеширане\n4. **External API**: Изпращайте към външна система за логове\n\n## Примерна имплементация с Analytics Engine\n\n```typescript\n// В tail функцията\nconst analyticsEngine = env.ANALYTICS_ENGINE;\nawait analyticsEngine.writeDataPoint({\n  blobs: [logEntry.scriptName, logEntry.level],\n  doubles: [Date.now()],\n  indexes: [logEntry.message]\n});\n```\n\n## Сигурност\n\n- Worker-ът не изпраща данни към външни системи\n- Всички логове остават в Cloudflare екосистемата\n- Конфигурацията позволява контрол върху logpush","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowbizarre%2Fhows-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowbizarre%2Fhows-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowbizarre%2Fhows-logger/lists"}