{"id":37599844,"url":"https://github.com/lavajuno/mirrorlog","last_synced_at":"2026-01-16T10:01:25.533Z","repository":{"id":200542033,"uuid":"699342387","full_name":"lavajuno/mirrorlog","owner":"lavajuno","description":"A customizable, multithreaded log server that provides a lot of functionality in a very small package.","archived":false,"fork":false,"pushed_at":"2024-04-18T16:19:56.000Z","size":285,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-18T18:15:13.231Z","etag":null,"topics":["java","logging","logserver","network"],"latest_commit_sha":null,"homepage":"https://lavajuno.github.io/mirrorlog/","language":"Java","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/lavajuno.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}},"created_at":"2023-10-02T12:55:28.000Z","updated_at":"2023-10-29T16:31:47.000Z","dependencies_parsed_at":"2024-02-06T04:25:03.567Z","dependency_job_id":"02be7cd5-9a0c-45b7-b804-096d6adfba58","html_url":"https://github.com/lavajuno/mirrorlog","commit_stats":null,"previous_names":["lavajuno/mirrorlog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lavajuno/mirrorlog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavajuno%2Fmirrorlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavajuno%2Fmirrorlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavajuno%2Fmirrorlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavajuno%2Fmirrorlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lavajuno","download_url":"https://codeload.github.com/lavajuno/mirrorlog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lavajuno%2Fmirrorlog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"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":["java","logging","logserver","network"],"created_at":"2026-01-16T10:01:23.358Z","updated_at":"2026-01-16T10:01:25.304Z","avatar_url":"https://github.com/lavajuno.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mirrorlog\n\nA customizable, multithreaded log server that provides a lot of functionality in a very small package.\n\n[Source Code](https://github.com/lavajuno/mirrorlog)\n\n[Releases](https://github.com/lavajuno/mirrorlog/releases)\n\n[Documentation](https://lavajuno.github.io/mirrorlog/docs/index.html)\n\n\n## Features\n - Logging to console and timestamped log files\n - Client-set component names to make searching logs easy\n - Simple stateless protocol, server is easy to talk to with many programming languages\n - Configurable duration of each log file\n - Automatic cleaning of old logs, configurable history length\n - Configurable firewall to block unknown IP addresses\n - Managed output queue for smaller response delays\n\n## Configuration\nMirrorLog's configuration is stored in the file \"mirrorlog.conf.json\"\n\nYou can customize the following:\n - The size of the server thread pool\n - The port that the server listens on\n - The timeout for inactive clients\n - Enable/disable a firewall that rejects unknown clients\n - The list of IP addresses of known clients to allow\n - The length that log component names are padded to\n - The amount of time that one log file represents\n - The number of old log files that are kept\n\n## Usage\nTo start the server, just run `mirrorlog.jar`.\n\nThe server uses a persistent TCP socket. No special action is needed when connecting or disconnecting.\n\nTo submit a log event to the server, send it the string `@Component@SeverityMessage\\n`\nwhere Component is the name of the component logging the message, Severity is a number from 0 to 3,\nand Message is the messaged to be logged. For example, the component \"MyComponent\" logging\na message with severity 0 (INFO) would send the following:\n\n`@MyComponent@0This is an example log event.\\n`\n\nThis will log an event with severity 0 (Info), which looks like this:\n\n`2023-10-16 10:30:04 [ INFO ]  MyComponent     : This is an example log event.`\n\nTo submit a log event with a different severity, change the 0 to 1, 2, or 3 for\nWARN, ERROR, or FATAL respectively.\n\nExamples:\n\n`@MyComponent@0My Event\\n` -\u003e `2023-10-16 10:30:05 [ INFO ]  MyComponent     : My Event`\n\n`@MyComponent@1My Event\\n` -\u003e `2023-10-16 10:30:06 [ WARN ]  MyComponent     : My Event`\n\n`@MyComponent@2My Event\\n` -\u003e `2023-10-16 10:30:07 [ ERROR ] MyComponent     : My Event`\n\n`@MyComponent@3My Event\\n` -\u003e `2023-10-16 10:30:08 [ FATAL ] MyComponent     : My Event`\n\nWhen you log an event to the server, it will echo your input to acknowledge that it has received it.\nIncoming events are queued, so you should receive a response from the server quickly, even if it is under load.\n\nLogs will look best when component names are shorter than the length that they are specified to be padded to in the \nconfiguration file. A properly configured log with good component names will look like the following:\n\n```\n2023-10-16 10:30:05 [ INFO ]  Website        : Opening connection to \"127.0.0.1\".\n2023-10-16 10:30:07 [ INFO ]  Website        : GET /login.html 200 OK\n2023-10-16 10:30:08 [ INFO ]  AccessControl  : Starting session for user \"856947126\".\n2023-10-16 10:30:10 [ WARN ]  AccessControl  : 4 blank parameters found in profile for user \"856947126\".\n2023-10-16 10:30:10 [ ERROR ] Website        : GET /admin.html 403 FORBIDDEN\n```\n\nYou can tinker with the server easily using `telnet` (all communication will be human-readable).\n\n## Licensing\nMirrorLog is Free \u0026 Open Source Software, and is released under the MIT license. (See `LICENSE`)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavajuno%2Fmirrorlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flavajuno%2Fmirrorlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flavajuno%2Fmirrorlog/lists"}