UNPKG

2.61 kBJavaScriptView Raw
1'use strict';
2
3/**
4 * Defines functions to manage loggers.
5 *
6 * // Load module "logger"
7 * var loggerAPI = require('@openveo/api').logger;
8 *
9 * @module logger
10 * @main logger
11 * @class logger
12 * @static
13 */
14
15var winston = require('winston');
16
17/**
18 * Adds a new file logger.
19 *
20 * @example
21 * var loggerAPI = require('@openveo/api').logger;
22 *
23 * var conf = {
24 * 'fileName' : '/tmp/openveo/logs/openveo.log', // File to log to
25 * 'level' : 'debug', // Debug level
26 * 'maxFileSize' : 1048576, // Maximum file size (in bytes)
27 * 'maxFiles' : 2, // Maximum number of archived files
28 * 'console': false // Deactivate logs in standard output
29 * };
30 *
31 * // Initializes logger "openveo"
32 * loggerAPI.add('openveo', conf);
33 * var logger = loggerAPI.get('openveo');
34 *
35 * // Log something
36 * logger.info('A simple log');
37 *
38 * @method add
39 * @static
40 * @param {String} name The name of the logger
41 * @param {Object} [conf] Logger configuration to initialize a new logger, if not specified a default
42 * logger will be created without any transport streams
43 * @param {String} conf.fileName The absolute path to the log file
44 * @param {String} [conf.level] The log level (either silly, debug, verbose, info, warn or error)
45 * @param {Number} [conf.maxFileSize] The maximum file size before log rotation
46 * @param {Number} [conf.maxFiles] The maximum number of files for log rotation
47 * @param {Boolean} [conf.console=true] false to deactivate logs in standard output
48 */
49module.exports.add = function(name, conf) {
50 if (!winston.loggers.loggers[name]) {
51
52 if (conf) {
53 winston.loggers.add(name, {
54 file: {
55 level: conf.level,
56 filename: conf.fileName,
57 maxsize: conf.maxFileSize,
58 maxFiles: conf.maxFiles
59 }
60 });
61 } else
62 winston.loggers.add(name);
63
64 // Remove Console transport, which log to the standard output
65 if (process.env.NODE_ENV == 'production' || !conf || conf.console === false)
66 this.get(name).remove(winston.transports.Console);
67
68 }
69
70 return this.get(name);
71};
72
73/**
74 * Gets a logger.
75 *
76 * @example
77 * var loggerAPI = require('@openveo/api').logger;
78 *
79 * // Get openveo logger
80 * var logger = loggerAPI.get('openveo');
81 *
82 * // Log something
83 * logger.info('A simple log');
84 *
85 * @method get
86 * @static
87 * @param {String} name The name of the logger
88 * @return {Object|Undefined} A winston logger or undefined if no logger corresponds to the given name
89 */
90module.exports.get = function(name) {
91 return winston.loggers.loggers[name];
92};