{"ref":"artifact:greltel-abap-cloud-logger","page":"/artifacts/greltel-abap-cloud-logger","json":"/artifacts/greltel-abap-cloud-logger.json","generated":"2026-10-27","drafted_with_ai":true,"entity":{"id":"greltel-abap-cloud-logger","name":"abap-cloud-logger","artifact_type":"package","ecosystem":"abap","flavors":[{"key":"abap-cloud","source":{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README, Prerequisites","checked":"2026-09-14","quote":"SAP S/4HANA 2023 (or higher) OR SAP BTP ABAP Environment."}}],"domain":"operations-and-runtime","origin_ring":"independent","description":{"one_line":"A logging library for ABAP Cloud that wraps the released class CL_BALI_LOG in a chainable logger, collecting exceptions, messages and tables, with a stopwatch and a sticky context tag.","short":"Chainable logger for ABAP Cloud around CL_BALI_LOG","what_it_solves":"A logging library for ABAP Cloud that wraps the released class CL_BALI_LOG and hands back a chainable logger instead of a sequence of Application Log calls. One logger exists per Application Log object and subobject, and it collects exceptions, message-class messages, free strings, BAPIRET2 structures and tables, and whole internal tables serialised to JSON, before the log is saved. Beside the entries it carries a stopwatch that logs the duration of a code block and a sticky context tag that is prefixed to every later entry. Viewing is kept apart from logging: the log is displayed through a viewer class handed to display( ). It needs SAP S/4HANA 2023 or higher or the SAP BTP ABAP Environment, and the XCO library."},"links":{"repo":"https://github.com/greltel/abap-cloud-logger"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README, Prerequisites","checked":"2026-09-14","quote":"SAP S/4HANA 2023 (or higher) OR SAP BTP ABAP Environment."}]},"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README, Design Goals-Features","checked":"2026-09-14","quote":"Install via [ABAPGit](http://abapgit.org)"}]}},"identity":{"license":"MIT"},"source_available":true,"maintainers":["actor:greltel"],"provides":[{"capability":"capability:logging","what_it_does":"Wraps CL_BALI_LOG in a fluent, chainable interface: one logger instance per Application Log object and subobject collects messages, exceptions, structures and JSON-serialised tables before they are saved to the Application Log.","sources":[{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README","checked":"2026-09-14","quote":"It acts as a fluent wrapper around the standard class `CL_BALI_LOG`, simplifying the Application Log API"},{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README, Design Goals-Features","checked":"2026-09-14","quote":"Based on Multiton Design Pattern for efficient management of log instances"}]}],"requires":[{"ref":"artifact:abapgit-abapgit","for":"Installs the repository into the ABAP system; the README gives [abapGit](artifact:abapgit-abapgit) as the install method.","sources":[{"url":"https://github.com/greltel/abap-cloud-logger","title":"greltel/abap-cloud-logger — README, Design Goals-Features","checked":"2026-09-14","quote":"Install via [ABAPGit](http://abapgit.org)"}]}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:dotabap"}],"first_seen":"2026-09-14"},"changed_in":[{"version":"2.0.0","date":"2026-09-16","what_changed":"A logger released with `free( )` raises `zcx_cloud_logger_error` (textid `instance_released`) on every writing method instead of discarding the call, and a new one comes from `zcl_cloud_logger=>get_instance( )`. `log_message_add` requires `symsg`, and the SAP GUI ALV viewer `zcl_cloud_logger_view_alv` is removed; `zcl_cloud_logger_view_console` writes to the ADT console.","invalidates":"Examples that keep writing to a logger after `free( )`, or display a log with `zcl_cloud_logger_view_alv`.","source":{"url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#200---2026-09-16","title":"abap-cloud-logger changelog, 2.0.0","checked":"2026-10-19","quote":"Removed `zcl_cloud_logger_view_alv` (SAP GUI ALV popup, Standard ABAP)."}}],"contributors":["actor:greltel","actor:larshp"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"3 contributors"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"abaplint syntax Cloud, no release"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"ABAP Unit Testing green, 2026-10-23"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 20 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":27,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":27,"forks":8,"open_issues":0,"archived":false,"pushed_at":"2026-10-23","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2025-07-16T10:22:51Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":1,"other_ci":false,"readme_bytes":19975,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"first_commit":"2025-07-16","last_commit":"2026-10-23","commits":294,"contributors":3,"ci_status":"success","ci_run_at":"2026-10-23","ci_workflow":"ABAP Unit Testing","ci_event":"push","readme_path":"README.md","readme_sha":"28cf1122c0fc8efea21e6bf165cf630e069b6cc3","repo_read":"2026-10-24","abap_syntax":{"repo":"greltel/abap-cloud-logger","file":"abaplint.json","url":"https://github.com/greltel/abap-cloud-logger/blob/HEAD/abaplint.json","version":"Cloud","checked":"2026-10-26"}},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"2.2.0","date":"2026-09-17","date_source":"heading","heading":"[2.2.0] - 2026-09-17","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#220---2026-09-17","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"fix","heading":"Fixed","items":1},{"kind":"other","heading":"Measured","items":1},{"kind":"change","heading":"Changed","items":1}],"hash":"eb0072fb8f5e55df"},{"version":"2.1.0","date":"2026-09-16","date_source":"heading","heading":"[2.1.0] - 2026-09-16","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#210---2026-09-16","sections":[{"kind":"feature","heading":"Added","items":4},{"kind":"fix","heading":"Fixed","items":2},{"kind":"change","heading":"Changed","items":1}],"hash":"897127ec9148437c"},{"version":"2.0.1","date":"2026-09-16","date_source":"heading","heading":"[2.0.1] - 2026-09-16","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#201---2026-09-16","sections":[{"kind":"fix","heading":"Fixed","items":6},{"kind":"removal","heading":"Removed","items":1}],"hash":"ca5e9b72ff6d7c29"},{"version":"2.0.0","date":"2026-09-16","date_source":"heading","heading":"[2.0.0] - 2026-09-16","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#200---2026-09-16","sections":[{"kind":"breaking","heading":"Breaking","items":7},{"kind":"feature","heading":"Added","items":8},{"kind":"fix","heading":"Fixed","items":3},{"kind":"change","heading":"Changed","items":3}],"hash":"f3681e5afd63293b","cited_by":[{"version":"2.0.0","date":"2026-09-16"}]},{"version":"1.6.0","date":"2026-04-26","date_source":"heading","heading":"[1.6.0] - 2026-04-26","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#160---2026-04-26","sections":[{"kind":"feature","heading":"Added","items":5},{"kind":"fix","heading":"Fixed","items":6},{"kind":"performance","heading":"Performance","items":1}],"hash":"f4c82929bcdce6a1"},{"version":"1.5.0","date":"2026-01-23","date_source":"heading","heading":"[1.5.0] - 2026-01-23","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#150---2026-01-23","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"d87555be7d8ff571"},{"version":"1.4.0","date":"2026-01-18","date_source":"heading","heading":"[1.4.0] - 2026-01-18","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#140---2026-01-18","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"7be748c784553179"},{"version":"1.3.0","date":"2026-01-09","date_source":"heading","heading":"[1.3.0] - 2026-01-09","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#130---2026-01-09","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"4d83d1ea8833bb39"},{"version":"1.2.0","date":"2026-01-07","date_source":"heading","heading":"[1.2.0] - 2026-01-07","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#120---2026-01-07","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"507a5c0076fdd83c"},{"version":"1.1.0","date":"2026-01-04","date_source":"heading","heading":"[1.1.0] - 2026-01-04","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#110---2026-01-04","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"8f0f09f41788686a"},{"version":"1.0.0","date":"2025-12-20","date_source":"heading","heading":"[1.0.0] - 2025-12-20","url":"https://github.com/greltel/abap-cloud-logger/blob/main/CHANGELOG.md#100---2025-12-20","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"f027ad328b4612af"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:greltel","name":"George Drakos","json":"/actors/greltel.json"}],"contributors":[{"ref":"actor:greltel","name":"George Drakos","json":"/actors/greltel.json"},{"ref":"actor:larshp","name":"Lars Hvam","json":"/actors/larshp.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}