1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const logLevel_1 = require("./options/logLevel");
|
4 | const events_1 = require("events");
|
5 | class Logger extends events_1.EventEmitter {
|
6 | constructor(fileName, debugName, logLevel = logLevel_1.LogLevel.Info, applicationName) {
|
7 | super();
|
8 | this.fileName = fileName;
|
9 | this.debuglog = require('debug')(debugName);
|
10 | this._applicationName = applicationName || 'application';
|
11 | if (process.env.NODE_LOG_CONSOLE === 'true') {
|
12 | this.on(fileName, (data) => {
|
13 | console.log(data);
|
14 | });
|
15 | }
|
16 | this.level = logLevel;
|
17 | }
|
18 | close() {
|
19 | return true;
|
20 | }
|
21 | produce(level, ...args) {
|
22 | const logargs = args.map(item => arg(item));
|
23 | this.debuglog(...args);
|
24 | this.emit(this.fileName, Object.assign({ level, name: this._applicationName }, logargs));
|
25 | }
|
26 | log(...args) {
|
27 | this.trace(...args);
|
28 | }
|
29 | info(...args) {
|
30 | if (logLevel_1.LogLevel.Info <= this.level) {
|
31 | this.produce('info', ...args);
|
32 | }
|
33 | }
|
34 | warn(...args) {
|
35 | if (logLevel_1.LogLevel.Warn <= this.level) {
|
36 | this.produce('warning', ...args);
|
37 | }
|
38 | }
|
39 | debug(...args) {
|
40 | this.trace(...args);
|
41 | }
|
42 | error(...args) {
|
43 | console.error(JSON.stringify(args));
|
44 | this.produce('error', ...args);
|
45 | }
|
46 | trace(...args) {
|
47 | if (logLevel_1.LogLevel.Trace <= this.level) {
|
48 | this.produce('trace', ...args);
|
49 | }
|
50 | }
|
51 | silly(...args) {
|
52 | this.trace(...args);
|
53 | }
|
54 | }
|
55 | exports.Logger = Logger;
|
56 | function arg(singleArg) {
|
57 | if (singleArg)
|
58 | try {
|
59 | if (typeof singleArg === 'function')
|
60 | return `func ${singleArg.name}`;
|
61 | if (singleArg.stack && singleArg.message) {
|
62 | let a = { stack: singleArg.stack, message: singleArg.message };
|
63 | return JSON.stringify(a);
|
64 | }
|
65 | else if (typeof singleArg === 'object') {
|
66 | return JSON.stringify(singleArg);
|
67 | }
|
68 | else {
|
69 | if (typeof singleArg === 'string') {
|
70 | return singleArg.replace(/\r\n/g, '');
|
71 | }
|
72 | return singleArg;
|
73 | }
|
74 | }
|
75 | catch (error) {
|
76 | return '[circular]';
|
77 | }
|
78 | return '';
|
79 | }
|
80 |
|
\ | No newline at end of file |