{"id":26742978,"url":"https://github.com/arijitcodes/ultralogger","last_synced_at":"2026-04-20T05:32:49.582Z","repository":{"id":198747236,"uuid":"701046390","full_name":"arijitcodes/ultralogger","owner":"arijitcodes","description":"A feature-rich Personalized Logger. [ NPM 📦 ]","archived":false,"fork":false,"pushed_at":"2023-11-07T17:54:17.000Z","size":724,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-09T18:07:51.015Z","etag":null,"topics":["api-request-logger","chalk","colorful-logger","console-log","console-logger","express-logger","javascript","js-logger","jsdoc","logger","logger-middleware","node-module","nodejs","nodejs-logger","npm-module","npm-package","request-logger","typescript","ultra-logger","ultralogger"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/ultralogger","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/arijitcodes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-10-05T19:54:55.000Z","updated_at":"2023-10-11T20:24:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"eb11e2f7-7bf7-4ab3-ba4d-ddb38e7e6c64","html_url":"https://github.com/arijitcodes/ultralogger","commit_stats":null,"previous_names":["arijitcodes/ultralogger"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/arijitcodes/ultralogger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijitcodes%2Fultralogger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijitcodes%2Fultralogger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijitcodes%2Fultralogger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijitcodes%2Fultralogger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arijitcodes","download_url":"https://codeload.github.com/arijitcodes/ultralogger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijitcodes%2Fultralogger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32034647,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["api-request-logger","chalk","colorful-logger","console-log","console-logger","express-logger","javascript","js-logger","jsdoc","logger","logger-middleware","node-module","nodejs","nodejs-logger","npm-module","npm-package","request-logger","typescript","ultra-logger","ultralogger"],"created_at":"2025-03-28T06:33:14.258Z","updated_at":"2026-04-20T05:32:49.565Z","avatar_url":"https://github.com/arijitcodes.png","language":"TypeScript","readme":"\u003cbr/\u003e\n\n\u003c!-- ASCII ART of Logo / Name --\u003e\n\u003c!--\n\u003cdiv\u003e\n\u003cspan style='font-family: \"Lucida Console\";line-height: 14px;font-size: 14px;display: inline-block;'\u003e╔╗\u0026nbsp;╔╗╔╗\u0026nbsp;\u0026nbsp;╔╗\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;╔╗\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cbr\u003e║║\u0026nbsp;║║║║\u0026nbsp;╔╝╚╗\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;║║\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cbr\u003e║║\u0026nbsp;║║║║\u0026nbsp;╚╗╔╝╔═╗╔══╗\u0026nbsp;║║\u0026nbsp;\u0026nbsp;\u0026nbsp;╔══╗╔══╗╔══╗╔══╗╔═╗\u003cbr\u003e║║\u0026nbsp;║║║║\u0026nbsp;\u0026nbsp;║║\u0026nbsp;║╔╝╚\u0026nbsp;╗║\u0026nbsp;║║\u0026nbsp;╔╗║╔╗║║╔╗║║╔╗║║╔╗║║╔╝\u003cbr\u003e║╚═╝║║╚╗\u0026nbsp;║╚╗║║\u0026nbsp;║╚╝╚╗║╚═╝║║╚╝║║╚╝║║╚╝║║║═╣║║\u0026nbsp;\u003cbr\u003e╚═══╝╚═╝\u0026nbsp;╚═╝╚╝\u0026nbsp;╚═══╝╚═══╝╚══╝╚═╗║╚═╗║╚══╝╚╝\u0026nbsp;\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;╔═╝║╔═╝║\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;╚══╝╚══╝\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003cbr\u003e\u003c/span\u003e\n\u003c/div\u003e\n --\u003e\n\n![Logo](screenshots/logo.png)\n\n# UltraLogger - The only Logger System you need\n\n### Making your Javascript and Typescript life EZ AF! 🤝🏻🙏🏻\n\nAuthor: [Arijit Banerjee](#author) \u003cbr/\u003e\nLicense: [MIT](./LICENSE.md)\n\n![Demo Screenshot](./screenshots/demo.png)\n\n\u003cbr /\u003e\n\n\u003c!-- shields.io Badges --\u003e\n\n\u003c!-- Websites / Links - Up / Down --\u003e\n\n[![NPM Package Link](https://img.shields.io/website?url=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fultralogger\u0026style=for-the-badge\u0026logo=npm\u0026label=npm%20package\u0026labelColor=%23232323)](https://www.npmjs.com/package/ultralogger) \u0026nbsp;\u0026nbsp;\n[![GitHub Repository Link](https://img.shields.io/website?url=https%3A%2F%2Fgithub.com%2Farijitcodes%2Fultralogger\u0026style=for-the-badge\u0026logo=github\u0026label=repository\u0026labelColor=%23232323)](https://github.com/arijitcodes/ultralogger) \u0026nbsp;\u0026nbsp;\n\n\u003c!-- \u003ca href=\"https://www.npmjs.com/package/ultralogger\"\u003e\u003cimg alt=\"NPM Package Link - Up/Down Indicator\" src=\"https://img.shields.io/website?url=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fultralogger\u0026style=for-the-badge\u0026logo=npm\u0026label=npm%20package\u0026labelColor=%23232323\" /\u003e\u003c/a\u003e \u0026nbsp;\n\u003ca href=\"https://github.com/arijitcodes/ultralogger\"\u003e\u003cimg alt=\"GitHub Repository Link - Up/Down Indicator\" src=\"https://img.shields.io/website?url=https%3A%2F%2Fgithub.com%2Farijitcodes%2Fultralogger\u0026style=for-the-badge\u0026logo=github\u0026label=repository\u0026labelColor=%23232323\" /\u003e\u003c/a\u003e\u0026nbsp; --\u003e\n\n\u003c!-- NPM Badges --\u003e\n\n[![NPM License](https://img.shields.io/npm/l/ultralogger?style=for-the-badge\u0026logo=npm\u0026labelColor=%23232323\u0026color=%23404040)](https://github.com/arijitcodes/ultralogger/blob/main/LICENSE.md) \u0026nbsp;\n[![NPM Version](https://img.shields.io/npm/v/ultralogger?style=for-the-badge\u0026logo=npm\u0026labelColor=%23232323\u0026color=%23404040)](https://www.npmjs.com/package/ultralogger) \u0026nbsp;\n[![npm collaborators](https://img.shields.io/npm/collaborators/ultralogger?style=for-the-badge\u0026logo=npm\u0026label=collaborators\u0026labelColor=%23232323\u0026color=%23404040)](https://www.npmjs.com/package/ultralogger) \u0026nbsp;\n[![npm type definitions](https://img.shields.io/npm/types/ultralogger?style=for-the-badge\u0026logo=npm\u0026labelColor=%23232323)](https://www.npmjs.com/package/ultralogger) \u0026nbsp;\n\n\u003c!-- GitHub Badges --\u003e\n\n[![GitHub language count](https://img.shields.io/github/languages/count/arijitcodes/ultralogger?style=for-the-badge\u0026logo=github\u0026labelColor=%23232323\u0026color=%23404040)](https://github.com/arijitcodes/ultralogger) \u0026nbsp;\n[![GitHub top language](https://img.shields.io/github/languages/top/arijitcodes/ultralogger?style=for-the-badge\u0026logo=github\u0026labelColor=%23232323)](https://github.com/arijitcodes/ultralogger) \u0026nbsp;\n[![GitHub last commit (branch)](https://img.shields.io/github/last-commit/arijitcodes/ultralogger/main?style=for-the-badge\u0026logo=github\u0026labelColor=%23232323)](https://github.com/arijitcodes/ultralogger/commits/main) \u0026nbsp;\n\n\u003c!-- Others --\u003e\n\n[![Semantic-Release Badge](https://img.shields.io/badge/semantic--release-e10079?style=for-the-badge\u0026logo=semantic-release\u0026labelColor=%23232323)](https://github.com/semantic-release/semantic-release) \u0026nbsp;\n[![Commitizen Friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen?style=for-the-badge\u0026labelColor=%23232323\u0026color=brightGreen)](https://commitizen.github.io/cz-cli/) \u0026nbsp;\n[![Conventional Commits Badge](https://img.shields.io/badge/conventional_commits-404040?style=for-the-badge\u0026logo=conventionalcommits\u0026labelColor=%23232323\u0026color=%23404040)](https://www.conventionalcommits.org) \u0026nbsp;\n\n## Features:\n\n- Types Support for Intellisense 💡\n- JSDoc In Code Documentation - just like any good library, we provide documentation, information and examples for our functions and methods on hover using JSdoc and TS. 🤙🏻\n- Config method to create and setup configs for different features ☸\n- Customizable Log Size and Information 💪🏻\n- 6 Types of Colorful \u0026 Pre-formatted Log Methods - to make your life easy while debugging (we all know logs are superior to debuggers 😏 - who uses debugger anyways eww 🤢🤮)\n- API Request Logger - You can use the APIReqLogger method as middleware in your Express Setup (or whatever you use) - life made easy to keep an eye on those freaky api calls 😇\n- File Logs - Option to save all those API Logs in a file too - gotta catch those Non-NPCs who was trying to mess up the API - But AFTER THE ☕ Break - the file will keep all them logs safe, don't worry we gotchu 🧐\n- **Super Special Feature** - **FATAL LOG**: If you use this for Fatal Error Cases (HIGH SEVERITY), then you have an option to setup a SendGrid Email ApiKey - and our system will notify you, everytime one of these logs were made! 😉\n  \u003cbr/\u003e( Look, we know we all devs are lazy! 😴 No one got time to keep looking at em logs xD Devs gotta sleep every half an hour too 💤 Just gotta check the 📧 in-case 💩 goes 👇🏻)\n\n\u003cbr/\u003e\n\n---\n\n## Setup \u0026 Usage:\n\n- **Import**: Import the package - Yall know what this stuff is fs\n\n  For ECMAScript Module a.k.a ESM -\n\n  ```typescript\n  import * as ultraLogger from \"ultralogger\";\n  ```\n\n  For CommonJS a.k.a CJS -\n\n  ```typescript\n  const ultraLogger = require(\"ultralogger\");\n  ```\n\n- **Config**: Setup your own config with the config method and pass a config object of type ultraLoggerConfig.\n\n  ```typescript\n  // UltraLogger Configuration\n  //  *** TYPESCRIPT ***\n\n  // Make a Config Object of type ultraLoggerConfig and pass it in the config()\n  const config: ultraLogger.ultraLoggerConfig = {\n    logType: \"SHORT\", // You can choose any of these 3 - \"FULL\" or, \"DEV\" or \"SHORT\"\n  };\n\n  ultraLogger.config(config);\n\n  // OR,\n\n  // Call the config method and write the config inside the ()\n  ultraLogger.config({\n    logType: \"SHORT\", // You can choose any of these 3 - \"FULL\" or, \"DEV\" or \"SHORT\"\n  });\n  ```\n\n  ```js\n  // UltraLogger Configuration\n  //  *** JAVASCRIPT ***\n\n  // Make a Config Object and pass it in the config()\n  const config = {\n    logType: \"SHORT\", // You can choose any of these 3 - \"FULL\" or, \"DEV\" or \"SHORT\"\n  };\n\n  ultraLogger.config(config);\n\n  // OR,\n\n  // Call the config method and write the config inside the ()\n  ultraLogger.config({\n    logType: \"SHORT\", // You can choose any of these 3 - \"FULL\" or, \"DEV\" or \"SHORT\"\n  });\n  ```\n\n    \u003cbr /\u003e\n\n  Details about the Config Properties:\n\n    \u003cbr /\u003e\n\n  | **CONFIG PROPERTIES** | **TYPES**            | **OPTIONAL ?** | **VALUES**                                                        | **DEFAULT VALUE**                                                      |\n  | --------------------- | -------------------- | -------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------- |\n  | logType               | \u003ccode\u003estring\u003c/code\u003e  | YES            | \u003ccode\u003e\"FULL\"\u003c/code\u003e or \u003ccode\u003e\"DEV\"\u003c/code\u003e or \u003ccode\u003e\"SHORT\"\u003c/code\u003e | \u003ccode\u003e\"FULL\"\u003c/code\u003e                                                    |\n  | writeToFile           | \u003ccode\u003eboolean\u003c/code\u003e | YES            | \u003ccode\u003etrue\u003c/code\u003e or \u003ccode\u003efalse\u003c/code\u003e                           | \u003ccode\u003efalse\u003c/code\u003e                                                     |\n  | fileLocation          | \u003ccode\u003estring\u003c/code\u003e  | YES            | ex: ./folder_that_exists/                                         | - (as 'writeToFile' is false so this is not set - as it is not needed) |\n  | fileName              | \u003ccode\u003estring\u003c/code\u003e  | YES            | file_name.log                                                     | - (as 'writeToFile' is false so this is not set - as it is not needed) |\n\n\u003cbr /\u003e\n\n- **JSDoc \u0026 Types Support:** Just hover over the method name that you want to know more about, and you should get the JSDoc info for that method. FOr ex: here we are hovering over the config method because we want some more info:\n  ![JSDoc \u0026 Types Support](screenshots/jsdoc-suggestion-onhover.png)\n\n- New 6 Types of **Colorful Logs** for your Daily Coding and Debugging sessions: We are bringing you 6 types of different logs through UltraLogger - which you can use instead of your everyday boring console.log() :\n\n  ```typescript\n  ultraLogger.log(\"Server is running on port 5000\");\n  ultraLogger.muted(\"Server is running on port 5000\");\n  ultraLogger.info(\"Server is running on port 5000\");\n  ultraLogger.warn(\"Server is running on port 5000\");\n  ultraLogger.error(\"Server is running on port 5000\");\n  ultraLogger.success(\"Server is running on port 5000\");\n  ```\n\n  Sample Output (with the 'logType' set as \"DEV\"):\n\n  ![6 types of logs - screenshot](screenshots/6-types-of-logs.png)\n\n- Use as **Express Middleware** to Log Requests Data: You can use it like an express middleware.\n\n  ```typescript\n  // *** TYPESCRIPT ***\n  const app: Application = express();\n\n  app.use(ultraLogger.APIReqLogger());\n\n  // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms\n  ```\n\n  ```js\n  // *** JAVASCRIPT ***\n  const app = express();\n\n  app.use(ultraLogger.APIReqLogger());\n\n  // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms\n  ```\n\n  OR,\n\n  If you just want to use UltraLogger as your Express API Request Logger - no need to setup the config. You can pass Log Option through the midleware method itself -\n\n  ```typescript\n  // *** TYPESCRIPT ***\n  const app: Application = express();\n\n  app.use(ultraLogger.APIReqLogger(\"FULL\")); // Available Options: \"FULL\", \"DEV\", \"SHORT\"\n\n  // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms\n  ```\n\n  ```js\n  // *** JAVASCRIPT ***\n  const app = express();\n\n  app.use(ultraLogger.APIReqLogger(\"FULL\")); // Available Options: \"FULL\", \"DEV\", \"SHORT\"\n\n  // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms\n  ```\n\n  If / when you use the APIReqLogger method as middleware without passing any values - \"FULL\" is set as Default Mode. Ex:\n\n  ```typescript\n  app.use(ultraLogger.APIReqLogger()); // We set it as FULL - by Default\n\n  // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms\n  ```\n\n  Sample Output Screenshot:\n\n  ![screenshot of long api logs](screenshots/full-api-log.png)\n\n  Or use \"DEV\" as option,\n\n  ```typescript\n  app.use(ultraLogger.APIReqLogger(\"DEV\"));\n\n  // Sample Output: [ 2023/10/05, 05:31:10 pm ] [ GET ] - /api : 200 - 8 ms\n  ```\n\n  Sample Output Screenshot:\n\n  ![screenshot of short api logs](screenshots/dev-api-log.png)\n\n  Or use \"SHORT\" as option,\n\n  ```typescript\n  app.use(ultraLogger.APIReqLogger(\"SHORT\"));\n\n  // Sample Output: [ GET ] - /api : 200 - 2 ms\n  ```\n\n  ![screenshot of short api logs](screenshots/short-api-log.png)\n\n- **Log API Requests Data on File too** - along with logging the API Requests Data, you can log them in a file and save it too if you need it!\n\n  - Setup the Config Properly with the keys and voila\n  - Yes, we have Typescript Support so your VSCode will provide you all the juicy auto suggestion 😉\n\n  Ex:\n\n  ```typescript\n  // *** TYPESCRIPT ***\n\n  // UltraLogger Configuration\n  const config: ultraLogger.ultraLoggerConfig = {\n    logType: \"DEV\",\n    writeToFile: true,\n    fileLocation: \"./\",\n    fileName: \"UltraLogger.log\",\n  };\n\n  ultraLogger.config(config);\n  ```\n\n  ```js\n  // ***JAVASCRIPT ***\n\n  // UltraLogger Configuration\n  const config = {\n    logType: \"DEV\",\n    writeToFile: true,\n    fileLocation: \"./\",\n    fileName: \"UltraLogger.log\",\n  };\n\n  ultraLogger.config(config);\n  ```\n\n  Or, you can directly create and pass the Config Object while calling the config(). Ex:\n\n  ```typescript\n  // Same for both Typescript \u0026 Javascript\n\n  ultraLogger.config({\n    logType: \"DEV\",\n    writeToFile: true,\n    fileLocation: \"./\",\n    fileName: \"UltraLogger.log\",\n  });\n  ```\n\n  Screenshot of the Log File:\n\n  ![screenshot-of-file-logs](screenshots/file-logs.png)\n\n- **FATAL LOG**: COMING SOON\n\n\u003cbr/\u003e\n\n---\n\n## Author:\n\nAuthor : [Arijit Banerjee](https://www.github.com/ArijitCodes)\n\nAbout : Full Stack Web Developer | Cyber Security Enthusiast | Actor\n\nSocial Media : \u0026nbsp;\n[![Instagram](https://i.ibb.co/4t76vTc/insta-transparent-14px.png) Instagram](https://www.instagram.com/arijit.codes)\n\u0026nbsp;\n[![Linkedin](https://i.stack.imgur.com/gVE0j.png) LinkedIn](https://www.linkedin.com/in/arijitban)\n\u0026nbsp;\n[![GitHub](https://i.stack.imgur.com/tskMh.png) GitHub](https://github.com/ArijitCodes)\n\u0026nbsp;\n[![Website](https://i.ibb.co/wCV57xR/Internet-1.png) Website](https://iamarijit.dev)\n\nEmail: arijit.codes@gmail.com\n\nWebsite: [iamarijit.dev](https://iamarijit.dev)\n\n---\n\nMore info about the project will be updated soon!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farijitcodes%2Fultralogger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farijitcodes%2Fultralogger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farijitcodes%2Fultralogger/lists"}