{"id":15066471,"url":"https://github.com/hpoul/dart_logging_appenders","last_synced_at":"2025-05-16T17:09:28.789Z","repository":{"id":35070195,"uuid":"203172209","full_name":"hpoul/dart_logging_appenders","owner":"hpoul","description":"Logging appenders for the logging package for print, file and remote (logz, loki).","archived":false,"fork":false,"pushed_at":"2025-01-21T10:51:02.000Z","size":719,"stargazers_count":24,"open_issues_count":8,"forks_count":31,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-12T16:53:07.846Z","etag":null,"topics":["dart","dartlang","flutter","logging"],"latest_commit_sha":null,"homepage":null,"language":"Dart","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/hpoul.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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},"funding":{"github":"hpoul"}},"created_at":"2019-08-19T12:51:33.000Z","updated_at":"2025-01-23T06:35:15.000Z","dependencies_parsed_at":"2024-02-18T10:25:14.196Z","dependency_job_id":"68b48e92-9277-47d6-92c2-20c40c24ca22","html_url":"https://github.com/hpoul/dart_logging_appenders","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpoul%2Fdart_logging_appenders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpoul%2Fdart_logging_appenders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpoul%2Fdart_logging_appenders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hpoul%2Fdart_logging_appenders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hpoul","download_url":"https://codeload.github.com/hpoul/dart_logging_appenders/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254573589,"owners_count":22093731,"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":["dart","dartlang","flutter","logging"],"created_at":"2024-09-25T01:08:25.162Z","updated_at":"2025-05-16T17:09:28.638Z","avatar_url":"https://github.com/hpoul.png","language":"Dart","funding_links":["https://github.com/sponsors/hpoul"],"categories":[],"sub_categories":[],"readme":"# logging_appenders\n\n[![Pub](https://img.shields.io/pub/v/logging_appenders.svg?color=green)](https://pub.dartlang.org/packages/logging_appenders)\n[![codecov](https://codecov.io/gh/hpoul/dart_logging_appenders/branch/master/graph/badge.svg)](https://codecov.io/gh/hpoul/dart_logging_appenders)\n\nNative dart package for logging appenders usable with the [logging](https://pub.dartlang.org/packages/logging) package.\n\n![Color Output Screenshot](doc/screenshot-small.png)\n\nIt currently includes appenders for:\n\n* Local Logging\n    * `print()` [PrintAppender](https://pub.dev/documentation/logging_appenders/latest/logging_appenders/PrintAppender-class.html)\n    * Rolling File Appender. [RotatingFileAppender](https://pub.dev/documentation/logging_appenders/latest/logging_appenders/RotatingFileAppender-class.html)\n* Remote Logging\n    * [logz.io](https://logz.io/) \n    * [loki](https://github.com/grafana/loki).\n    * [gelf/Graylog](https://go2docs.graylog.org/5-0/getting_in_log_data/ingest_gelf.html)\n\n## Performance of Remote Logging Appenders\n\nI am not sure if it is wise to use this in production, but it's great during beta testing with\na handful of users so you have all logs available.\n\nIt tries to stay reasonable performant by batching log entries and sending them off only every few\nseconds. If network is down it will retry later. (with an ever increasing interval).\n\n# Getting Started\n\nAfter installing package `logging` and `logging_appenders`:\n\n```dart\nimport 'package:logging/logging.dart';\nimport 'package:logging_appenders/logging_appenders.dart';\n\nfinal _logger = Logger('main');\n\nvoid main() {\n  PrintAppender.setupLogging();\n\n  // The above code is the same as:\n  // Logger.root.level = Level.ALL;\n  // PrintAppender()..attachToLogger(Logger.root);\n\n  _logger.fine('Lorem ipsum');\n}\n```\n\nOutputs:\n\n```\n$ dart main.dart\n2019-08-19 15:36:03.827563 FINE main - Lorem ipsum\n```\n\n# Support for Exception chaining\n\nTo chain exception you can use the extension method on `Exception`:\n`causedBy()`.\n\n```dart\nint test() {\n  try {\n    int.parse('a');\n  } catch (e, stackTrace) {\n    throw Exception('unable to parse').causedBy(e, stackTrace);\n  }\n}\nint main() {\n  try {\n    test();\n  } catch (e, stackTrace) {\n    logger.severe('catched Exception', e, stackTrace);\n  }\n}\n```\n\n# Color Formatter\n\n```dart\n    PrintAppender(formatter: const ColorFormatter())\n        ..attachToLogger(Logger.root);\n```\n\nProduces:\n\n![Color Output Screenshot](doc/screenshot.png)\n\n# Logging to stderr\n\nWhen using `dart:io` (ie. command line apps) it is possible to\ndefine which log levels should go to `stderr` instead of `stdout`:\n\n```\nPrintAppender.setupLogging(stderrLevel: Level.SEVERE);\n```\n\n# Remote Appenders\n\n## Appender for logz.io\n\n```dart\n  final _logzIoApiSender = LogzIoApiAppender(\n    // you can find your API key and the required URL from \n    // the logz.io dashboard: https://app-eu.logz.io/#/dashboard/settings/general\n    apiToken: 'MY API KEY',\n    url: 'https://listener-eu.logz.io:8071/',\n    labels: {'app': 'MyApp', 'os': Platform.operatingSystem},\n  );\n  _logzIoApiSender.attachToLogger(Logger.root);\n  \n  \n  // ...\n  If you know that you no longer need the appender. it's good to dispose it:\n  _logzIoApiSender.dispose();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpoul%2Fdart_logging_appenders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhpoul%2Fdart_logging_appenders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhpoul%2Fdart_logging_appenders/lists"}