UNPKG

loggers-factory

Version:

Javascript package that makes the use of loggers a breath.

130 lines (100 loc) 3.62 kB
# Loggers Factory ![NPM version](https://img.shields.io/npm/v/loggers-factory.svg?style=flat-square) ![Github issues](https://img.shields.io/github/issues/pasdechancee/loggers-factory.svg?style=flat-square) ![NPM downloads](https://img.shields.io/npm/dt/loggers-factory.svg) ![Github stars](https://img.shields.io/github/stars/pasdechancee/loggers-factory.svg?style=flat-square) Javascript package that makes the use of loggers a breath. It relies on the [winston](https://github.com/winstonjs/winston) module. There's a lot of room for improvement but it does the job nonetheless. Enjoy :) !! ## Setup Install the loggers factory in your project as an NPM dependency : ```shell npm install loggers-factory ``` You can also clone it into your project directory from [loggers-factory GitHub repository](https://github.com/pasdechancee/loggers-factory): ```shell git clone https://github.com/pasdechancee/loggers-factory.git ``` ## Usage ### Default logger ```js const get_logger = require("loggers-factory"); const logger = get_logger(); // => your default logger ! logger.info("Hello world !"); ``` Console output: ```console 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](https://github.com/pasdechancee/loggers-factory/tree/master/src/default_params.js). ```js 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_CONSOLE_LEVEL=info LOG_COMBINED_LEVEL=debug LOG_ERRORS_LEVEL=error LOG_"any custom level you want"_LEVEL=silly ``` ## Contributing Please read the [CONTRIBUTING](https://github.com/pasdechancee/loggers-factory/blob/master/CONTRIBUTING.md) document before making changes that you would like adopted in the code. --- &copy; [MIT license](https://github.com/pasdechancee/loggers-factory/blob/master/LICENSE) Contact: <pasdechancee.keyser-soze@protonmail.com>