{"id":19607138,"url":"https://github.com/robocorp/robotframework-output-stream","last_synced_at":"2025-04-27T19:33:11.181Z","repository":{"id":65783457,"uuid":"574507480","full_name":"robocorp/robotframework-output-stream","owner":"robocorp","description":"Robot Framework Output Stream (a RF listener to provide an output that's compact and streamable).","archived":false,"fork":false,"pushed_at":"2023-03-15T10:06:51.000Z","size":523,"stargazers_count":11,"open_issues_count":2,"forks_count":1,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-17T19:55:24.721Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robocorp.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":"2022-12-05T13:17:16.000Z","updated_at":"2024-10-01T11:58:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"f331d534-f304-4757-bd72-b1b1b0809135","html_url":"https://github.com/robocorp/robotframework-output-stream","commit_stats":{"total_commits":36,"total_committers":2,"mean_commits":18.0,"dds":0.02777777777777779,"last_synced_commit":"23c70e61e3f97d8c5a1d50e4795be957bbe099ff"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Frobotframework-output-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Frobotframework-output-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Frobotframework-output-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Frobotframework-output-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robocorp","download_url":"https://codeload.github.com/robocorp/robotframework-output-stream/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251196475,"owners_count":21550958,"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":[],"created_at":"2024-11-11T10:09:03.761Z","updated_at":"2025-04-27T19:33:11.171Z","avatar_url":"https://github.com/robocorp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compact and streaming-ready output for Robot Framework.\n\nA custom output listener for Robot Framework enabling real-time analysis in a more compact format.\n\n\u003e Note: The current version is still pre-alpha and the [format specified](/docs/format.md) may still change.\n\n## Why\n\nThe default Robot Framework output and reports quickly get really big or break when running big or long-running cases. Log handling is also using a lot of resources and if robot execution just breaks, the output.xml usually is corrupted and needs manual fixes.\n\n### Scoping the problem\n\nThe default output of Robot Framework (output.xml, log.html and report.html):\n* Unable to stream the log by default during the run\n* The output generation is a resource-heavy task that can and does break executions.\n* `output.xml`, `log.html`, `report.html` get really big on disk.\n* The `output.xml` needs \"closing\", so any problems while creating it yield a corrupted XML file and no logs.\n  * Post-processing is only possible in some cases and is also resource intensive.\n  * ..and in cases where the `output.xml` already breaks the post-processing is not possible.\n* Flattening and changing the robot code is a big task and is only sometimes possible.\n\n### Scoping the solution\nWe need:\n* Compact format to reduce the file size and reduce the load on machine resources.\n* The output file that is intact after each write (journaling/transactional pattern).\n* Ability to control how much space the logs can take.\n* Ability to stream the log during the run\n* Match the original data content, so it is possible to create the existing logs from the new data format.\n* Solution needs to work without changes to the robot code itself.\n\n## What\n\nImplementation is based on a Robot Framework Listener, so it's possible to use it in any Robot Framework run using the `--listener` argument.\n\n### Installation\n\nInstall with:\n\n`pip install robotframework-output-stream`\n\n### Usage\n\n`python -m robot -l NONE -r NONE -o NONE --listener robot_out_stream.RFStream:--dir=\u003cdir_to_output\u003e:--max-file-size=\u003c5m\u003e:--max-files=\u003c5\u003e:--log=\u003clog.html\u003e`\n\n* The `-l NONE and -r NONE -o NONE` arguments disable the standard Robot Framework output.\n* More details on the arguments are below.\n\n\n## Dealing with sensitive data in the logs\n\n* See: [Handling Sensitive Data](/docs/handling_sensitive_data.md)\n\n\n## How\n\nThe \"how\" of the solution is essentially the listener arguments, data format and the parsers:\n\n* [Format specification](/docs/format.md)\n* [Listener arguments](/docs/arguments.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobocorp%2Frobotframework-output-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobocorp%2Frobotframework-output-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobocorp%2Frobotframework-output-stream/lists"}