1 | 'use strict';
|
2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7 | };
|
8 | var __metadata = (this && this.__metadata) || function (k, v) {
|
9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10 | };
|
11 | Object.defineProperty(exports, "__esModule", { value: true });
|
12 | const Winston = require("winston");
|
13 | const logger_1 = require("./config/logger");
|
14 | const _ = require("lodash");
|
15 | const path = require("path");
|
16 | const fs = require("fs-extra-promise");
|
17 | const typescript_ioc_1 = require("typescript-ioc");
|
18 | const configuration_1 = require("./configuration");
|
19 | const util_1 = require("util");
|
20 | let Logger = class Logger {
|
21 | constructor() {
|
22 | this.winston = this.instantiateLogger(this.config.gateway.logger);
|
23 | this.config.on('gateway-update', (gateway) => {
|
24 | if (this.winston && this.isDebugEnabled()) {
|
25 | this.debug('The system logger is restarting...');
|
26 | }
|
27 | this.winston = this.instantiateLogger(gateway.logger);
|
28 | });
|
29 | }
|
30 | instantiateLogger(config) {
|
31 | this.level = (config ? logger_1.LogLevel[config.level] : logger_1.LogLevel.info);
|
32 | const options = {
|
33 | level: logger_1.LogLevel[this.level],
|
34 | transports: []
|
35 | };
|
36 | if (config && config.console) {
|
37 | options.transports.push(new Winston.transports.Console(config.console));
|
38 | }
|
39 | if (config && config.file) {
|
40 | config.file = _.omit(config.file, 'outputDir');
|
41 | let outputDir = config.file.outputDir || './logs';
|
42 | if (_.startsWith(outputDir, '.')) {
|
43 | outputDir = path.join(this.config.rootPath, outputDir);
|
44 | }
|
45 | const fileName = (process.env.processNumber ? `gateway-${process.env.processNumber}.log` : `gateway.log`);
|
46 | config.file['filename'] = path.join(outputDir, fileName);
|
47 | fs.ensureDirSync(path.dirname(config.file['filename']));
|
48 | options.transports.push(new Winston.transports.File(config.file));
|
49 | }
|
50 | return new Winston.Logger(options);
|
51 | }
|
52 | isDebugEnabled() {
|
53 | return this.level === logger_1.LogLevel.debug;
|
54 | }
|
55 | isInfoEnabled() {
|
56 | return this.level >= logger_1.LogLevel.info;
|
57 | }
|
58 | isWarnEnabled() {
|
59 | return this.level >= logger_1.LogLevel.warn;
|
60 | }
|
61 | isErrorEnabled() {
|
62 | return this.level >= logger_1.LogLevel.error;
|
63 | }
|
64 | debug(...args) {
|
65 | this.winston.debug.apply(this, arguments);
|
66 | }
|
67 | info(...args) {
|
68 | this.winston.info.apply(this, arguments);
|
69 | }
|
70 | warn(...args) {
|
71 | this.winston.warn.apply(this, arguments);
|
72 | }
|
73 | error(...args) {
|
74 | this.winston.error.apply(this, arguments);
|
75 | }
|
76 | inspectObject(object) {
|
77 | util_1.inspect(object, { colors: true, depth: 15 });
|
78 | }
|
79 | };
|
80 | __decorate([
|
81 | typescript_ioc_1.Inject,
|
82 | __metadata("design:type", configuration_1.Configuration)
|
83 | ], Logger.prototype, "config", void 0);
|
84 | Logger = __decorate([
|
85 | typescript_ioc_1.Singleton,
|
86 | typescript_ioc_1.AutoWired,
|
87 | __metadata("design:paramtypes", [])
|
88 | ], Logger);
|
89 | exports.Logger = Logger;
|
90 |
|
\ | No newline at end of file |