UNPKG

1.56 kBJavaScriptView Raw
1/**
2 * @class ConsoleAppender
3 * @classdesc ConsoleAppender writes to the console all entries at or above the specified level.
4 *
5 * @author: darryl.west@raincitysoftware.com
6 * @created: 7/6/14 12:02 PM
7 */
8const Logger = require('./Logger' );
9const AbstractAppender = require('./AbstractAppender' );
10
11/*eslint no-console: "off"*/
12const ConsoleAppender = function(opts) {
13 'use strict';
14
15 // get a copy of the opts
16 const options = Object.assign({}, opts);
17
18 const appender = this;
19 const typeName = options.typeName || 'ConsoleAppender';
20 const writer = options.writer || console.log;
21
22 let level = options.level || Logger.STANDARD_LEVELS[0];
23 let levels = options.levels || Logger.STANDARD_LEVELS;
24 let currentLevel = levels.indexOf( level );
25
26 options.typeName = typeName;
27 AbstractAppender.extend( this, options );
28
29 /**
30 * default formatter for this appender;
31 * @param entry
32 */
33 this.formatter = function(entry) {
34 const fields = appender.formatEntry( entry );
35
36 return fields.join( appender.separator );
37 };
38
39 /**
40 * call formatter then write the entry to the console output
41 * @param entry - the log entry
42 */
43 this.write = function(entry) {
44 if (levels.indexOf( entry.level ) >= currentLevel) {
45 writer( appender.formatter( entry ));
46 }
47 };
48
49 this.setLevel = function(level) {
50 const idx = levels.indexOf( level );
51 if (idx >= 0) {
52 currentLevel = idx;
53 }
54 };
55};
56
57module.exports = ConsoleAppender;