{"id":18809639,"url":"https://github.com/vseplet/luminous","last_synced_at":"2026-03-13T06:32:45.343Z","repository":{"id":85523264,"uuid":"594225189","full_name":"vseplet/luminous","owner":"vseplet","description":"Extremely configurable logger for Deno and Node.js","archived":false,"fork":false,"pushed_at":"2026-01-04T08:23:36.000Z","size":167,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-25T04:04:01.454Z","etag":null,"topics":["deno","formatter","log","log4j","logger","logging","logs","transport","ts","typescript"],"latest_commit_sha":null,"homepage":"https://jsr.io/@vseplet/luminous","language":"TypeScript","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/vseplet.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-27T22:28:05.000Z","updated_at":"2026-01-04T08:23:40.000Z","dependencies_parsed_at":"2024-06-09T17:43:38.055Z","dependency_job_id":"e76961b1-1310-4260-ad0a-6726c9e894e7","html_url":"https://github.com/vseplet/luminous","commit_stats":null,"previous_names":["sevapp/luminous"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/vseplet/luminous","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vseplet%2Fluminous","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vseplet%2Fluminous/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vseplet%2Fluminous/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vseplet%2Fluminous/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vseplet","download_url":"https://codeload.github.com/vseplet/luminous/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vseplet%2Fluminous/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30460659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T03:55:51.346Z","status":"ssl_error","status_checked_at":"2026-03-13T03:55:33.055Z","response_time":60,"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":["deno","formatter","log","log4j","logger","logging","logs","transport","ts","typescript"],"created_at":"2024-11-07T23:17:10.800Z","updated_at":"2026-03-13T06:32:45.326Z","avatar_url":"https://github.com/vseplet.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# luminous\n\n[![JSR](https://jsr.io/badges/@vseplet/luminous)](https://jsr.io/@vseplet/luminous)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/vseplet/luminous)](https://github.com/vseplet/luminous/pulse)\n[![GitHub last commit](https://img.shields.io/github/last-commit/vseplet/luminous)](https://github.com/vseplet/luminous/commits/main)\n\n## 👋 👋 ATTENTION!\n\n\u003e This package is under development and will be frequently updated. The author\n\u003e would appreciate any help, advice, and pull requests! Thank you for your\n\u003e understanding 😊\n\nLuminous is a extremely configurable logger for Deno written in TypeScript. It\nprovides a simple and flexible way to log events and messages in Deno\napplications with various levels of severity. With Luminous, developers can\nconfigure the logger to meet their specific needs and customize the logging\nformat to suit their preferences.\n\n### Usage\n\n```ts\nimport luminous from \"jsr:@vseplet/luminous@1.0.6\";\n\nconst log = new luminous.Logger();\nlog.trc`Hello, World!`;\n```\n\n## Examples\n\n- different logs by logging levels: [simple.ts](./examples/simple.ts)\n\n```bash\ndeno task exmaple:simple\n```\n\n- inheritance of options when creating new loggers:\n  [hierarchy.ts](./examples/hierarchy.ts), run:\n\n```bash\ndeno task exmaple:hierarchy\n```\n\n## Contents\n\n- [luminous](#luminous)\n  - [👋 👋 ATTENTION!](#--attention)\n    - [Usage](#usage)\n  - [Examples](#examples)\n  - [Contents](#contents)\n  - [Levels](#levels)\n  - [Logger Options](#logger-options)\n  - [Transports](#transports)\n  - [Formatters](#formatters)\n  - [DONATE](#donate)\n  - [LICENCE](#licence)\n\n## Levels\n\nLuminous provides eight different logging levels that enable developers to log\nevents and messages with different levels of severity. Each level is designed to\nserve a specific purpose and can help developers troubleshoot issues and debug\ncomplex problems.\u003cbr\u003e\u003cbr\u003e 0 TRACE:\u003cbr\u003e\n\n```ts\nlog.trc`This is TRACE log message`;\n// 01:58:35 [TRC] default: This is TRACE log message\n```\n\nThe TRACE level is the lowest level of severity in Luminous. This level is used\nto log the most detailed information about an application's execution, such as\nmethod calls, function parameters, and variable values. The TRACE level is\nuseful for debugging complex issues and identifying the root cause of a problem.\n\n1 DEBUG:\u003cbr\u003e\n\n```ts\nlog.dbg`This is DEBUG log message`;\n// 01:58:35 [DBG] default: This is DEBUG log message\n```\n\nThe DEBUG level is used to log debugging information that is useful for\ndevelopers during application development. This level can include information\nabout application flow, execution paths, and other relevant details that can\nhelp developers identify and fix bugs.\n\n2 VERBOSE:\u003cbr\u003e\n\n```ts\nlog.vrb`This is VERBOSE log message`;\n// 01:58:35 [VRB] default: This is VERBOSE log message\n```\n\nThe VERBOSE level is used to log detailed information that is not critical to\nthe application's operation but can be useful for developers during debugging.\nThis level includes information about application state, network activity, and\nother detailed events.\n\n3 INFO:\u003cbr\u003e\n\n```ts\nlog.inf`This is INFO log message`;\n// 01:58:35 [INF] default: This is INFO log message\n```\n\nThe INFO level is used to log information about the application's operation.\nThis level includes messages that indicate when the application starts or stops,\nwhen it performs significant operations, or when it encounters events that may\nbe of interest to developers or system administrators.\n\n4 USER:\u003cbr\u003e\n\n```ts\nlog.usr`This is USER log message`;\n// 01:58:35 [USR] default: This is USER log message\n```\n\nThe USER level is used to log events that are relevant to end-users, such as\nlogin attempts, user actions, and other user-related events. This level is\nuseful for tracking user behavior and identifying usability issues.\n\n5 WARN:\u003cbr\u003e\n\n```ts\nlog.wrn`This is WARN log message`;\n// 01:58:35 [WRN] default: This is WARN log message\n```\n\nThe WARN level is used to log warnings about potential issues that may affect\nthe application's operation. This level includes messages about deprecated APIs,\ninvalid configuration settings, or other issues that may cause unexpected\nbehavior.\n\n6 ERROR:\u003cbr\u003e\n\n```ts\nlog.err`This is ERROR log message`;\n// 01:58:35 [ERR] default: This is ERROR log message\n```\n\nThe ERROR level is used to log errors that occur during application execution\nbut are recoverable. This level includes messages about exceptions, timeouts, or\nother errors that may require attention but do not necessarily require the\napplication to stop.\n\n7 FATAL:\u003cbr\u003e\n\n```ts\nlog.ftl`This is FATAL log message`;\n// 01:58:35 [FTL] default: This is FATAL log message\n```\n\nThe FATAL level is used to log critical errors that require immediate attention\nand may cause the application to stop. This level includes messages about\nunrecoverable errors, such as out-of-memory errors, disk failures, or other\ncatastrophic events.\n\n## Logger Options\n\n[LoggerOptions](./src/Logger.ts) in Luminous are a set of configurable settings\nthat enable developers to customize the behavior and functionality of the logger\nto meet their specific needs. The [OptionsBuilder](./src/OptionsBuilder.ts)\nclass in Luminous is a utility class that provides a fluent API for building and\nconfiguring logger options. It allows developers to create and customize\nLoggerOptions objects in a flexible and intuitive way, by providing a set of\nmethods for setting various options. For example:\n\n```ts\nconst loggerOptions = new luminous.OptionsBuilder()\n  .setName(\"Main\")\n  .build();\n\nconst logger = new luminous.Logger(loggerOptions);\nlogger.inf`Hello, World!`;\n```\n\n## Transports\n\nThe [AbstractTransport](./src/Transport.ts) is the base class for all transports\nin Luminous. A transport is responsible for sending formatted log messages to\ntheir final destination, which could be the console, a file, a database, or any\nother endpoint. At the moment, Luminous has a\n[TerminalTransport](./src/transports/Terminal.ts). For example:\n\n```ts\n// Create a new instance of TerminalTransport to send logs to the terminal.\nconst transport = new luminous.transports.TermianlTransport(),\n\n// Create a new OptionsBuilder instance to configure the logger options.\nconst loggerOptions = new luminous.OptionsBuilder()\n  .setName('Main') // Set the name of the logger to 'Main'.\n  .addTransport(\n    new luminous.formatters.TextFormatter(),\n    transport,\n  ) // Add the TextFormatter and TerminalTransport to the logger.\n  .build(); // Build the final logger options object.\n\n// Create a new logger instance with the configured options.\nconst logger = new luminous.Logger(loggerOptions);\n\n// Log an information message.\nlogger.inf(`Hello, World!`);\n// 01:58:35 [INF] Main: Hello, World!\n```\n\n## Formatters\n\nIn Luminous, a [AbstractFormatter](./src/Formatter.ts) is a class that is\nresponsible for formatting log messages into a human-readable string format. The\n[IDataForFormatting](./src/Formatter.ts) interface defines the data that is\npassed to the formatter, which includes the name of the logger, the severity\nlevel of the log message, the message itself, and any additional metadata that\nmay be attached to the message. Currently, Luminous has two basic forrmaters:\n[TextFormatter](./src/formatters/TextFormatter.ts) and\n[JsonFormatter](./src/formatters/JsonFormatter.ts). For example:\n\n```ts\n// Create a new TextFormatter instance that formats log messages as text with metadata and a custom timestamp pattern.\nconst textFormatter = new luminous.formatters.TextFormatter({\n  showMetadata: true,\n  timestampPattern: \"yyyy-MM-dd HH:mm:ss\",\n});\n\n// Create a new OptionsBuilder instance to configure the logger options.\nconst loggerOptions = new luminous.OptionsBuilder()\n  .setName(\"Main\") // Set the name of the logger to 'Main'.\n  .addTransport(\n    textFormatter,\n    new luminous.transports.TerminalTransport(),\n  ) // Add the TextFormatter and TerminalTransport to the logger.\n  .build(); // Build the final logger options object.\n\n// Create a new logger instance with the configured options.\nconst logger = new luminous.Logger(loggerOptions);\n\n// Log an information message with metadata.\nlogger.inf(`Hello, World!`, { meta0: \"0\", meta1: \"1\" });\n// 2023-02-26 01:58:35 [INF] Main: Hello, World! {\n//  meta0: \"0\"\n//  mrta1: \"1\"\n// }\n```\n\n## DONATE\n\n🫶 You can support me and my work in the following ways: \u003cbr\u003e **TON**:\n`EQBiaSPuG33CuKXHClwsVvA-SazmLmtiTfXV7dQnqJdIlGgI`\u003cbr\u003e **USDT (TRC 20)**\n`(TRC20): TGPWzEiQjMYHjZx4fb3SDSumiSXdmjE4ZR`\u003cbr\u003e **BTC**:\n`bc1qq37svf4h8sg5qjsv99n9jf3r45dtd5yf5mdpc5`\u003cbr\u003e **ETH**:\n`0xAdc58F26cA3dCc01256cF1BeF6221f4bcaa3c660`\u003cbr\u003e **SOL**:\n`BckFFoxZw36ABbNS8Fc66LCdzJhu4ZwQANRdq49XmqKw`\u003cbr\u003e\n\n## LICENCE\n\n[LGPL-2.1](https://github.com/sevapp/luminous/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvseplet%2Fluminous","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvseplet%2Fluminous","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvseplet%2Fluminous/lists"}