Javascript package that makes the use of loggers a breath.

Usage no npm install needed!

<script type="module">
  import loggersFactory from 'https://cdn.skypack.dev/loggers-factory';


Loggers Factory

NPM version Github issues NPM downloads Github stars

Javascript package that makes the use of loggers a breath. It relies on the winston module. There's a lot of room for improvement but it does the job nonetheless. Enjoy :) !!


Install the loggers factory in your project as an NPM dependency :

npm install loggers-factory

You can also clone it into your project directory from loggers-factory GitHub repository:

git clone https://github.com/pasdechancee/loggers-factory.git


Default logger

const get_logger = require("loggers-factory");

const logger = get_logger();
// => your default logger !

logger.info("Hello world !");

Console output:

2018-12-09T13:17:34.768Z [MAIN.7532] info: Hello world !

Log output:

{"timestamp":"2018-12-09T13:17:34.768Z","level":"info","source":"MAIN.7532","message":"Hello world !"}

Custom logger

You only have to change the values that you'd like to custom ! Your custom parameters will be deep merged with the default ones.

const get_logger = require("loggers-factory");

const custom_params = {
    source: "my_app", // this changes the logs label.
    // This is your new default logs folder path.
    logs_path: "my_app/folder/logs",
    level_design: {
        levels: {
            // min level = 5... This is a point to improve !
            // we're not able to insert levels in betwee nthe existing ones.
            verbose: 5
        colors: {
            // custom style if you don't like the winston default.
            verbose: "italic bold grey"
    transport: {
        console: {
            // The console is disabled in PRODUCTION env.
            level: "warn"
        logs: {
            combined: {
                // This overwrites the default logs folder path.
                logs_path: "my_app/folder/logs/combined"
            errors: {
                // customed_winston_format = winston format that you created.
                format: custom_winston_format
            custom_log: {
                name: "custom",
                level: process.env.LOG_CUSTOM_LEVEL || "debug",
                logs_path: "my_app/folder/logs",
                format: custom_winston_format,
                date_pattern: "DD-MM-YYYY",
                // see https://github.com/winstonjs/winston-daily-rotate-file
                // for max_size and max_files format.
                max_size: undefined,
                max_files: "14d",
                on_limit: undefined // rotation not supported yet !!

const logger = get_logger(custom_params);
// => your customed logger !

.env variables

You can set up your own .env variables if you want. If you don't, the module will set these by default.

If you have your own .env variables, you don't have to set them in your custom parameters anymore.

LOG_PATH = "my_app/folder/logs";
LOG_"any custom level you want"_LEVEL=silly


Please read the CONTRIBUTING document before making changes that you would like adopted in the code.

© MIT license Contact: pasdechancee.keyser-soze@protonmail.com