{"id":31920316,"url":"https://github.com/3urobeat/ada-output-logger","last_synced_at":"2026-03-07T16:32:27.203Z","repository":{"id":246914647,"uuid":"822249727","full_name":"3urobeat/ada-output-logger","owner":"3urobeat","description":"📝 Make Ada logging finally intuitive [WIP]","archived":false,"fork":false,"pushed_at":"2025-04-05T15:29:36.000Z","size":361,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-22T09:52:32.621Z","etag":null,"topics":["ada","ada-lang","library","logging"],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3urobeat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"3urobeat","custom":["paypal.me/3urobeat"]}},"created_at":"2024-06-30T17:47:51.000Z","updated_at":"2025-04-05T15:29:40.000Z","dependencies_parsed_at":"2024-07-23T00:20:01.033Z","dependency_job_id":"e8112d2a-5e53-41fd-8ba3-e0bc358a3530","html_url":"https://github.com/3urobeat/ada-output-logger","commit_stats":null,"previous_names":["3urobeat/ada-output-logger"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/3urobeat/ada-output-logger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fada-output-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fada-output-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fada-output-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fada-output-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3urobeat","download_url":"https://codeload.github.com/3urobeat/ada-output-logger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fada-output-logger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30221510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T14:02:48.375Z","status":"ssl_error","status_checked_at":"2026-03-07T14:02:43.192Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ada","ada-lang","library","logging"],"created_at":"2025-10-13T21:58:32.314Z","updated_at":"2026-03-07T16:32:27.177Z","avatar_url":"https://github.com/3urobeat.png","language":"Ada","funding_links":["https://github.com/sponsors/3urobeat","paypal.me/3urobeat"],"categories":[],"sub_categories":[],"readme":"# ada-output-logger\nAn Ada logging library offspring of my [JS output-logger library](https://github.com/3urobeat/output-logger).  \n\nIt drastically simplifies logging messages and interacting with stdout/-in while also providing a bunch of eyecandy for a better user experience.  \nSee the list of features below!\n\n\u0026nbsp;\n\n## Features\n- Colored log levels: Info, Warn, Error \u0026 Debug\n- Keep track of every log message with an output file\n- Display file name to keep track of log origins even in large projects\n- Overwrite a log message with the next one by marking it as *remove*\n- Animations: 6 are shipped by default\n\n\u003c/br\u003e\n\nThe fundamental idea of the library is to easily construct log messages by chaining calls to public functions of `Logger_Type`.\n\nIt facilitates this concept by creating an instance `Logger` of the *tagged record* `Logger_Dummy` which every function takes as the first parameter, making them accessible through `Logger` by using the *dot notation*.  \nEvery function then returns the `Logger` instance again so that you can easily chain another function call.  \n\nThis creates only one minor problem because Ada *forces* you to handle function return values - you have to end your chain with a call to the procedure `EoL` (End Of Line).  \nThis procedure only serves to consume the `Logger` parameter, does nothing and returns nothing.\n\nFor examples, see the [logger_test.adb](./logger_test.adb) file.\n\n\u003cbr\u003e\n\n\u003e [!IMPORTANT]\n\u003e Make sure to \\*only\\* use this library for logging while it is active.  \n\u003e Printing yourself while the logger is active will lead to weird behavior like messages clipping into another,  \n\u003e as the library does clever cursor management which `Ada.Text_IO` does not do.\n\n\u0026nbsp;\n\n## Include\nCreate a `lib/` directory in your project and clone this repository into it.  \n\nAdd an import at the top of your main body:  \n`with Logger_Type; use Logger_Type;`\n\nAt the top of your project's gpr file, add a with statement:  \n`with \"lib/ada-output-logger/ada_output_logger.gpr\";`\n\nYou can then simply compile your project using gprbuild and the library will be included in the build process.    \n\u003e Compiling using gnatmake is currently not supported because C sources are used as well.\n\n\u0026nbsp;\n\n## Functions\nStart constructing your message by calling `Logger`.  \nYou can then chain any other function behind it, following a few rules:\n- `Rm`, indicating that this message should be removed by the next one, must always be the **first** function in the chain\n- `Animation` must always be the first, or in case of `Rm` existing the second, function in the chain \n- `Nl`, indicating that a newline should be printed after this message, must always be the second to last function in the chain\n- Every call chain must end with `EoL;` to consume the return value of the previous function in the chain\n- You cannot add `Nl` to a message marked as `Rm` as it would obviously break the removal of it\n\nFor basically any possible example, please see the [logger_test.adb](./tests/logger_test.adb) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3urobeat%2Fada-output-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3urobeat%2Fada-output-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3urobeat%2Fada-output-logger/lists"}