Navel Piercing Madness

    online-log

    0.2.6 • Public • Published

    online-log

    minified size install size online-demo version

    Using vscode? Install our online-log snippets extension on vscode marketplace

    NPM module to generate online log for your express applications. Establishes a new end-point on /online-log. Main view is on /online-log/view

    Version 0.2.0 Release Notes:

    • Added support for optional console.log printing with a possibility to colour level string.
    • Added log level selection, so entries with lower log level than configured won´t be registered.
    • Minnor improvements on the web view.

    online-demo

    Use cases:

    This module has been developed as a way to have an easy and accessible entry point to internal production services logs without having to go into production server or inspecting application terminal or log files. This way logging information can be accessed anywhere from any device, such as smartphone or tablets.

    By registering and exposing log it could be use on monitoring and alerting processes or with automatization software like Jenkins.

    Important: This version does not support authentication to the web view yet. Be aware of this if you are going to use it on your production environments

    Installation

    This module works with express so you will need to have a current express application.

    To install just run the command npm i online-log

    Features

    • On memory log register defined by log level
    • Each entry defined by a uid
    • Generates an online view with the log registry
    • Refreshes automatically
    • Filter by log level
    • Define your own log level colors

    Usage

    Usage is quite simple. Just initiate the log end-points executting the function online-log(app) passing your express app as parameter. Then start writting logs with function log(). Example:

    //Importing express
    const express =  require('express');
     
    //Initializing app
    const app =  express();
     
    //requiring and initializing online-log
    const online_log = require("online-log");
    online_log(app);
    //asign logging main function
    const log = online_log.log;
     
    //Start writting fanzy log
    log("DEBUG", "This is a debug log line");

    Log levels:

    Currently, allowed log levels are:

    • TRACE
    • DEBUG
    • INFO
    • WARN
    • ERROR
    • FATAL

    Future versions will allow you to configure custom log levels and its key word on log() function. To reference to a log level on a log entry, introduce the log level keywords (those listed earlier) as first parameter of log() function with UPPERCASE.

    //This will NOT work
    log("trace", "This log will thorw an error")
    //This will work
    log("TRACE", "This log will work");

    Object and error support

    The web view supports the log of objects and error. The modules handles in a special way log message parameter that it detects as Object (JSON) and Error types.

    To log an error:

          const online_log =  require("online-log").log; 
          try{
              //your code here
          }
          catch(error){
              log("ERROR", error)
              //your code here
              
          } 

    Error can be displayed with any log level.

    To log an object:

          const online_log =  require("online-log").log; 
         log("DEBUG", {
                 object:  "test", 
                 foo:{
                    bar:  "test"
                    }
                })

    Log registry

    Log registry is stored in memory in an object that you can access with property .logger of main online-log object. It's made by a series of arrays with the different properties of each log entry, ordered by execution time, being the latest at the end of each list. This way (object of lists) has been tested to be the fastest way to manipulate the object, and also the less memory consuming.

    logger: {
        dateTime: [],
        level: [],
        process: [],
        content: [],
        uid: [],
     }

    You can access this object over the end-point /online-log/. This could be useful to execute automatic tasks such as reload when error message is shown or email sending.

    Log registry is, by default, 1000 entries long. But you can modify that number by configuration.

    Configuration

    Configuration of module options is made through option parameter on online-log() function. Currently, available configurations are styles.levelsColors to define the color shown on the web view of each log level, and memory_lines_length, to define the the log registry length.

    In future versions there will be more options, such as authentication enable (with user and password), custom log levels or default level filter in the view.

    Param type description
    styles.levelsColors Object Defines the color of each log level
    memory_lines_length Int Set max number log entries stored on memory
    enable_console_print Boolean Enables the cosole printing of entries. By default false
    enable_colorful_console Boolean Enables the color style on console printing
    log_level String Established the minimum log level to register and show

    Example of configuration object:

    onlinelog(app, 
        {
            memory_lines_length:  2,
            styles:{
                levelsColors: 
                {
                    trace:  "#fff"
                }
        }
    });

    Note that you don't have to specified levels and its color. Missing level will get default color.

    Web view

    Web view is the main purpose of the module. Use the online example to test functionalities: online-demo Main aspects of the web view are:

    • Level badges with the count of entries by level
    • Proportion bar that shows the percentage of entries with each level
    • Filtering entries by level clicking on the level badges bar
    • Refresh interval selector
    • Contextual menu left-clicking on an entry with currently two options (clearlog, findnext)

    Future

    As mention earlier, future versions will include:

    • Autentication on web view
    • More customization of log levels and default options
    • More end-points to explore and extract value of your loggin information.
    • Dashboard of log resumen by time
    • Time period filter on web view
    • More options on contextual menu on web view like; find-previus, highlight similar, checkout on google, or copy message.
    • Responsive design for mobile.

    Install

    npm i online-log

    DownloadsWeekly Downloads

    5

    Version

    0.2.6

    License

    ISC

    Unpacked Size

    136 kB

    Total Files

    9

    Last publish

    Collaborators

    • pabloiea1995