Skip to content

arijitcodes/ultralogger

Repository files navigation


Logo

UltraLogger - The only Logger System you need

Making your Javascript and Typescript life EZ AF! ๐Ÿค๐Ÿป๐Ÿ™๐Ÿป

Author: Arijit Banerjee
License: MIT

Demo Screenshot


NPM Package Link ย ย  GitHub Repository Link ย ย 

NPM License ย  NPM Version ย  npm collaborators ย  npm type definitions ย 

GitHub language count ย  GitHub top language ย  GitHub last commit (branch) ย 

Semantic-Release Badge ย  Commitizen Friendly ย  Conventional Commits Badge ย 

Features:

  • Types Support for Intellisense ๐Ÿ’ก
  • 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. ๐Ÿค™๐Ÿป
  • Config method to create and setup configs for different features โ˜ธ
  • Customizable Log Size and Information ๐Ÿ’ช๐Ÿป
  • 6 Types of Colorful & Pre-formatted Log Methods - to make your life easy while debugging (we all know logs are superior to debuggers ๐Ÿ˜ - who uses debugger anyways eww ๐Ÿคข๐Ÿคฎ)
  • 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 ๐Ÿ˜‡
  • 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 ๐Ÿง
  • 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! ๐Ÿ˜‰
    ( 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 ๐Ÿ‘‡๐Ÿป)


Setup & Usage:

  • Import: Import the package - Yall know what this stuff is fs

    For ECMAScript Module a.k.a ESM -

    import * as ultraLogger from "ultralogger";

    For CommonJS a.k.a CJS -

    const ultraLogger = require("ultralogger");
  • Config: Setup your own config with the config method and pass a config object of type ultraLoggerConfig.

    // UltraLogger Configuration
    //  *** TYPESCRIPT ***
    
    // Make a Config Object of type ultraLoggerConfig and pass it in the config()
    const config: ultraLogger.ultraLoggerConfig = {
      logType: "SHORT", // You can choose any of these 3 - "FULL" or, "DEV" or "SHORT"
    };
    
    ultraLogger.config(config);
    
    // OR,
    
    // Call the config method and write the config inside the ()
    ultraLogger.config({
      logType: "SHORT", // You can choose any of these 3 - "FULL" or, "DEV" or "SHORT"
    });
    // UltraLogger Configuration
    //  *** JAVASCRIPT ***
    
    // Make a Config Object and pass it in the config()
    const config = {
      logType: "SHORT", // You can choose any of these 3 - "FULL" or, "DEV" or "SHORT"
    };
    
    ultraLogger.config(config);
    
    // OR,
    
    // Call the config method and write the config inside the ()
    ultraLogger.config({
      logType: "SHORT", // You can choose any of these 3 - "FULL" or, "DEV" or "SHORT"
    });

    Details about the Config Properties:


    CONFIG PROPERTIES TYPES OPTIONAL ? VALUES DEFAULT VALUE
    logType string YES "FULL" or "DEV" or "SHORT" "FULL"
    writeToFile boolean YES true or false false
    fileLocation string YES ex: ./folder_that_exists/ - (as 'writeToFile' is false so this is not set - as it is not needed)
    fileName string YES file_name.log - (as 'writeToFile' is false so this is not set - as it is not needed)

  • JSDoc & 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: JSDoc & Types Support

  • 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() :

    ultraLogger.log("Server is running on port 5000");
    ultraLogger.muted("Server is running on port 5000");
    ultraLogger.info("Server is running on port 5000");
    ultraLogger.warn("Server is running on port 5000");
    ultraLogger.error("Server is running on port 5000");
    ultraLogger.success("Server is running on port 5000");

    Sample Output (with the 'logType' set as "DEV"):

    6 types of logs - screenshot

  • Use as Express Middleware to Log Requests Data: You can use it like an express middleware.

    // *** TYPESCRIPT ***
    const app: Application = express();
    
    app.use(ultraLogger.APIReqLogger());
    
    // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms
    // *** JAVASCRIPT ***
    const app = express();
    
    app.use(ultraLogger.APIReqLogger());
    
    // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms

    OR,

    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 -

    // *** TYPESCRIPT ***
    const app: Application = express();
    
    app.use(ultraLogger.APIReqLogger("FULL")); // Available Options: "FULL", "DEV", "SHORT"
    
    // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms
    // *** JAVASCRIPT ***
    const app = express();
    
    app.use(ultraLogger.APIReqLogger("FULL")); // Available Options: "FULL", "DEV", "SHORT"
    
    // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms

    If / when you use the APIReqLogger method as middleware without passing any values - "FULL" is set as Default Mode. Ex:

    app.use(ultraLogger.APIReqLogger()); // We set it as FULL - by Default
    
    // Sample Output: [ 2023/10/05, 05:31:11 pm ] [ ::ffff:127.0.0.1 ] - [ GET ] - /api : 200 - 3 ms

    Sample Output Screenshot:

    screenshot of long api logs

    Or use "DEV" as option,

    app.use(ultraLogger.APIReqLogger("DEV"));
    
    // Sample Output: [ 2023/10/05, 05:31:10 pm ] [ GET ] - /api : 200 - 8 ms

    Sample Output Screenshot:

    screenshot of short api logs

    Or use "SHORT" as option,

    app.use(ultraLogger.APIReqLogger("SHORT"));
    
    // Sample Output: [ GET ] - /api : 200 - 2 ms

    screenshot of short api logs

  • 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!

    • Setup the Config Properly with the keys and voila
    • Yes, we have Typescript Support so your VSCode will provide you all the juicy auto suggestion ๐Ÿ˜‰

    Ex:

    // *** TYPESCRIPT ***
    
    // UltraLogger Configuration
    const config: ultraLogger.ultraLoggerConfig = {
      logType: "DEV",
      writeToFile: true,
      fileLocation: "./",
      fileName: "UltraLogger.log",
    };
    
    ultraLogger.config(config);
    // ***JAVASCRIPT ***
    
    // UltraLogger Configuration
    const config = {
      logType: "DEV",
      writeToFile: true,
      fileLocation: "./",
      fileName: "UltraLogger.log",
    };
    
    ultraLogger.config(config);

    Or, you can directly create and pass the Config Object while calling the config(). Ex:

    // Same for both Typescript & Javascript
    
    ultraLogger.config({
      logType: "DEV",
      writeToFile: true,
      fileLocation: "./",
      fileName: "UltraLogger.log",
    });

    Screenshot of the Log File:

    screenshot-of-file-logs

  • FATAL LOG: COMING SOON



Author:

Author : Arijit Banerjee

About : Full Stack Web Developer | Cyber Security Enthusiast | Actor

Social Media : ย  Instagram Instagram ย  Linkedin LinkedIn ย  GitHub GitHub ย  Website Website

Email: [email protected]

Website: iamarijit.dev


More info about the project will be updated soon!