@tramvai/module-log 2.70.1 → 2.72.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/LogStore.browser.js +6 -0
- package/lib/LogStore.es.js +6 -0
- package/lib/LogStore.js +11 -0
- package/lib/browser.js +7 -176
- package/lib/constants.browser.js +4 -0
- package/lib/constants.es.js +4 -0
- package/lib/constants.js +9 -0
- package/lib/devLogs.browser.js +171 -0
- package/lib/devLogs.es.js +171 -0
- package/lib/devLogs.js +182 -0
- package/lib/server.es.js +8 -174
- package/lib/server.js +8 -174
- package/package.json +10 -11
package/lib/LogStore.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var state = require('@tramvai/state');
|
|
6
|
+
|
|
7
|
+
const setLogs = state.createEvent('setLogs');
|
|
8
|
+
const LogStore = state.createReducer('devLogs', []).on(setLogs, (_, logs) => logs);
|
|
9
|
+
|
|
10
|
+
exports.LogStore = LogStore;
|
|
11
|
+
exports.setLogs = setLogs;
|
package/lib/browser.js
CHANGED
|
@@ -1,180 +1,11 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { createLoggerFactory, BrowserReporter } from '@tinkoff/logger';
|
|
3
|
+
import { Module } from '@tramvai/core';
|
|
4
|
+
import { LOGGER_TOKEN, LOGGER_INIT_HOOK } from '@tramvai/tokens-common';
|
|
5
5
|
export { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import each from '@tinkoff/utils/array/each';
|
|
10
|
-
import split from '@tinkoff/utils/string/split';
|
|
11
|
-
import { createEvent, createReducer } from '@tramvai/state';
|
|
12
|
-
|
|
13
|
-
const LOGGER_NAME = '';
|
|
14
|
-
const LOGGER_KEY = 'tramvai';
|
|
15
|
-
|
|
16
|
-
const setLogs = createEvent('setLogs');
|
|
17
|
-
const LogStore = createReducer('devLogs', []).on(setLogs, (_, logs) => logs);
|
|
18
|
-
|
|
19
|
-
class DevLogsReporter {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.logs = [];
|
|
22
|
-
}
|
|
23
|
-
log(logObj) {
|
|
24
|
-
this.logs.push(logObj);
|
|
25
|
-
}
|
|
26
|
-
start() {
|
|
27
|
-
this.reset();
|
|
28
|
-
}
|
|
29
|
-
reset() {
|
|
30
|
-
this.logs = [];
|
|
31
|
-
}
|
|
32
|
-
flush() {
|
|
33
|
-
const flushed = this.logs;
|
|
34
|
-
this.reset();
|
|
35
|
-
return flushed;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
class DevLogsExtension {
|
|
39
|
-
constructor(logs) {
|
|
40
|
-
this.logs = [];
|
|
41
|
-
this.logs = logs;
|
|
42
|
-
}
|
|
43
|
-
extend(logObj) {
|
|
44
|
-
const [index] = logObj.args;
|
|
45
|
-
// @ts-ignore
|
|
46
|
-
return this.logs[index];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
[
|
|
50
|
-
provide({
|
|
51
|
-
provide: LOGGER_INIT_HOOK,
|
|
52
|
-
multi: true,
|
|
53
|
-
useFactory({ reporter }) {
|
|
54
|
-
return (loggerInstance) => {
|
|
55
|
-
loggerInstance.addReporter(reporter);
|
|
56
|
-
};
|
|
57
|
-
},
|
|
58
|
-
deps: {
|
|
59
|
-
reporter: 'ssrDevReporter',
|
|
60
|
-
},
|
|
61
|
-
}),
|
|
62
|
-
provide({
|
|
63
|
-
provide: 'ssrDevReporter',
|
|
64
|
-
scope: Scope.SINGLETON,
|
|
65
|
-
useClass: DevLogsReporter,
|
|
66
|
-
}),
|
|
67
|
-
provide({
|
|
68
|
-
provide: COMBINE_REDUCERS,
|
|
69
|
-
multi: true,
|
|
70
|
-
useValue: LogStore,
|
|
71
|
-
}),
|
|
72
|
-
provide({
|
|
73
|
-
provide: commandLineListTokens.customerStart,
|
|
74
|
-
multi: true,
|
|
75
|
-
useFactory: ({ reporter }) => {
|
|
76
|
-
return function startSsrLogs() {
|
|
77
|
-
reporter.start();
|
|
78
|
-
};
|
|
79
|
-
},
|
|
80
|
-
deps: {
|
|
81
|
-
reporter: 'ssrDevReporter',
|
|
82
|
-
},
|
|
83
|
-
}),
|
|
84
|
-
provide({
|
|
85
|
-
provide: commandLineListTokens.generatePage,
|
|
86
|
-
multi: true,
|
|
87
|
-
useFactory: ({ context, reporter }) => {
|
|
88
|
-
const logs = reporter.flush();
|
|
89
|
-
return function endSsrLogs() {
|
|
90
|
-
return context.dispatch(setLogs(logs));
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
deps: {
|
|
94
|
-
context: CONTEXT_TOKEN,
|
|
95
|
-
reporter: 'ssrDevReporter',
|
|
96
|
-
},
|
|
97
|
-
}),
|
|
98
|
-
provide({
|
|
99
|
-
provide: SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
100
|
-
multi: true,
|
|
101
|
-
useFactory: ({ environmentManager }) => {
|
|
102
|
-
return createPapiMethod({
|
|
103
|
-
method: 'get',
|
|
104
|
-
path: '/logger',
|
|
105
|
-
async handler({ parsedUrl: { query } }) {
|
|
106
|
-
const { mode, level, enable } = query;
|
|
107
|
-
const applyDefaultConfig = mode === 'default';
|
|
108
|
-
const clearCurrentConfig = mode || level || enable;
|
|
109
|
-
let debugLevel;
|
|
110
|
-
let debugEnable;
|
|
111
|
-
if (applyDefaultConfig) {
|
|
112
|
-
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
113
|
-
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
114
|
-
}
|
|
115
|
-
if (level) {
|
|
116
|
-
debugLevel = level;
|
|
117
|
-
}
|
|
118
|
-
if (enable) {
|
|
119
|
-
debugEnable = enable;
|
|
120
|
-
}
|
|
121
|
-
if (clearCurrentConfig) {
|
|
122
|
-
logger$1.clear();
|
|
123
|
-
}
|
|
124
|
-
if (debugLevel) {
|
|
125
|
-
logger$1.setLevel(debugLevel);
|
|
126
|
-
}
|
|
127
|
-
if (debugEnable) {
|
|
128
|
-
each((val) => {
|
|
129
|
-
const [lvl, name] = val.split(':');
|
|
130
|
-
logger$1.enable(lvl, name);
|
|
131
|
-
}, split(',', debugEnable));
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
},
|
|
136
|
-
deps: {
|
|
137
|
-
environmentManager: ENV_MANAGER_TOKEN,
|
|
138
|
-
},
|
|
139
|
-
}),
|
|
140
|
-
];
|
|
141
|
-
const flushLogs = (ssrLogger, logs) => {
|
|
142
|
-
if (logs && logs.length) {
|
|
143
|
-
// eslint-disable-next-line no-console
|
|
144
|
-
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
145
|
-
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
146
|
-
// eslint-disable-next-line no-console
|
|
147
|
-
console.groupEnd();
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
const clientProviders = [
|
|
151
|
-
provide({
|
|
152
|
-
provide: COMBINE_REDUCERS,
|
|
153
|
-
multi: true,
|
|
154
|
-
useValue: LogStore,
|
|
155
|
-
}),
|
|
156
|
-
provide({
|
|
157
|
-
provide: commandLineListTokens.customerStart,
|
|
158
|
-
multi: true,
|
|
159
|
-
useFactory: ({ logger, store }) => {
|
|
160
|
-
return function rehydrateSsrDevLogs() {
|
|
161
|
-
const logs = store.getState(LogStore);
|
|
162
|
-
const ssrLogger = logger({
|
|
163
|
-
name: 'ssr-logger',
|
|
164
|
-
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
165
|
-
beforeReporters: [],
|
|
166
|
-
reporters: [new BrowserReporter()],
|
|
167
|
-
extensions: [new DevLogsExtension(logs)],
|
|
168
|
-
});
|
|
169
|
-
flushLogs(ssrLogger, logs);
|
|
170
|
-
};
|
|
171
|
-
},
|
|
172
|
-
deps: {
|
|
173
|
-
logger: LOGGER_TOKEN,
|
|
174
|
-
store: STORE_TOKEN,
|
|
175
|
-
},
|
|
176
|
-
}),
|
|
177
|
-
];
|
|
6
|
+
import { LOGGER_NAME, LOGGER_KEY } from './constants.browser.js';
|
|
7
|
+
import { clientProviders } from './devLogs.browser.js';
|
|
8
|
+
export { LogStore, setLogs } from './LogStore.browser.js';
|
|
178
9
|
|
|
179
10
|
const logger = createLoggerFactory({
|
|
180
11
|
name: LOGGER_NAME,
|
|
@@ -205,4 +36,4 @@ LogModule = __decorate([
|
|
|
205
36
|
})
|
|
206
37
|
], LogModule);
|
|
207
38
|
|
|
208
|
-
export { LogModule,
|
|
39
|
+
export { LogModule, logger };
|
package/lib/constants.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { createPapiMethod } from '@tramvai/papi';
|
|
2
|
+
import { provide, Scope, commandLineListTokens } from '@tramvai/core';
|
|
3
|
+
import { LOGGER_INIT_HOOK, COMBINE_REDUCERS, CONTEXT_TOKEN, LOGGER_TOKEN, STORE_TOKEN } from '@tramvai/tokens-common';
|
|
4
|
+
import { logger, BrowserReporter } from '@tinkoff/logger';
|
|
5
|
+
import { SERVER_MODULE_PAPI_PRIVATE_ROUTE } from '@tramvai/tokens-server';
|
|
6
|
+
import { ENV_MANAGER_TOKEN } from '@tramvai/module-environment';
|
|
7
|
+
import each from '@tinkoff/utils/array/each';
|
|
8
|
+
import split from '@tinkoff/utils/string/split';
|
|
9
|
+
import { LogStore, setLogs } from './LogStore.browser.js';
|
|
10
|
+
|
|
11
|
+
class DevLogsReporter {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.logs = [];
|
|
14
|
+
}
|
|
15
|
+
log(logObj) {
|
|
16
|
+
this.logs.push(logObj);
|
|
17
|
+
}
|
|
18
|
+
start() {
|
|
19
|
+
this.reset();
|
|
20
|
+
}
|
|
21
|
+
reset() {
|
|
22
|
+
this.logs = [];
|
|
23
|
+
}
|
|
24
|
+
flush() {
|
|
25
|
+
const flushed = this.logs;
|
|
26
|
+
this.reset();
|
|
27
|
+
return flushed;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class DevLogsExtension {
|
|
31
|
+
constructor(logs) {
|
|
32
|
+
this.logs = [];
|
|
33
|
+
this.logs = logs;
|
|
34
|
+
}
|
|
35
|
+
extend(logObj) {
|
|
36
|
+
const [index] = logObj.args;
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
return this.logs[index];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
[
|
|
42
|
+
provide({
|
|
43
|
+
provide: LOGGER_INIT_HOOK,
|
|
44
|
+
multi: true,
|
|
45
|
+
useFactory({ reporter }) {
|
|
46
|
+
return (loggerInstance) => {
|
|
47
|
+
loggerInstance.addReporter(reporter);
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
deps: {
|
|
51
|
+
reporter: 'ssrDevReporter',
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
provide({
|
|
55
|
+
provide: 'ssrDevReporter',
|
|
56
|
+
scope: Scope.SINGLETON,
|
|
57
|
+
useClass: DevLogsReporter,
|
|
58
|
+
}),
|
|
59
|
+
provide({
|
|
60
|
+
provide: COMBINE_REDUCERS,
|
|
61
|
+
multi: true,
|
|
62
|
+
useValue: LogStore,
|
|
63
|
+
}),
|
|
64
|
+
provide({
|
|
65
|
+
provide: commandLineListTokens.customerStart,
|
|
66
|
+
multi: true,
|
|
67
|
+
useFactory: ({ reporter }) => {
|
|
68
|
+
return function startSsrLogs() {
|
|
69
|
+
reporter.start();
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
deps: {
|
|
73
|
+
reporter: 'ssrDevReporter',
|
|
74
|
+
},
|
|
75
|
+
}),
|
|
76
|
+
provide({
|
|
77
|
+
provide: commandLineListTokens.generatePage,
|
|
78
|
+
multi: true,
|
|
79
|
+
useFactory: ({ context, reporter }) => {
|
|
80
|
+
const logs = reporter.flush();
|
|
81
|
+
return function endSsrLogs() {
|
|
82
|
+
return context.dispatch(setLogs(logs));
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
deps: {
|
|
86
|
+
context: CONTEXT_TOKEN,
|
|
87
|
+
reporter: 'ssrDevReporter',
|
|
88
|
+
},
|
|
89
|
+
}),
|
|
90
|
+
provide({
|
|
91
|
+
provide: SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
92
|
+
multi: true,
|
|
93
|
+
useFactory: ({ environmentManager }) => {
|
|
94
|
+
return createPapiMethod({
|
|
95
|
+
method: 'get',
|
|
96
|
+
path: '/logger',
|
|
97
|
+
async handler({ parsedUrl: { query } }) {
|
|
98
|
+
const { mode, level, enable } = query;
|
|
99
|
+
const applyDefaultConfig = mode === 'default';
|
|
100
|
+
const clearCurrentConfig = mode || level || enable;
|
|
101
|
+
let debugLevel;
|
|
102
|
+
let debugEnable;
|
|
103
|
+
if (applyDefaultConfig) {
|
|
104
|
+
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
105
|
+
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
106
|
+
}
|
|
107
|
+
if (level) {
|
|
108
|
+
debugLevel = level;
|
|
109
|
+
}
|
|
110
|
+
if (enable) {
|
|
111
|
+
debugEnable = enable;
|
|
112
|
+
}
|
|
113
|
+
if (clearCurrentConfig) {
|
|
114
|
+
logger.clear();
|
|
115
|
+
}
|
|
116
|
+
if (debugLevel) {
|
|
117
|
+
logger.setLevel(debugLevel);
|
|
118
|
+
}
|
|
119
|
+
if (debugEnable) {
|
|
120
|
+
each((val) => {
|
|
121
|
+
const [lvl, name] = val.split(':');
|
|
122
|
+
logger.enable(lvl, name);
|
|
123
|
+
}, split(',', debugEnable));
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
deps: {
|
|
129
|
+
environmentManager: ENV_MANAGER_TOKEN,
|
|
130
|
+
},
|
|
131
|
+
}),
|
|
132
|
+
];
|
|
133
|
+
const flushLogs = (ssrLogger, logs) => {
|
|
134
|
+
if (logs && logs.length) {
|
|
135
|
+
// eslint-disable-next-line no-console
|
|
136
|
+
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
137
|
+
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
138
|
+
// eslint-disable-next-line no-console
|
|
139
|
+
console.groupEnd();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const clientProviders = [
|
|
143
|
+
provide({
|
|
144
|
+
provide: COMBINE_REDUCERS,
|
|
145
|
+
multi: true,
|
|
146
|
+
useValue: LogStore,
|
|
147
|
+
}),
|
|
148
|
+
provide({
|
|
149
|
+
provide: commandLineListTokens.customerStart,
|
|
150
|
+
multi: true,
|
|
151
|
+
useFactory: ({ logger, store }) => {
|
|
152
|
+
return function rehydrateSsrDevLogs() {
|
|
153
|
+
const logs = store.getState(LogStore);
|
|
154
|
+
const ssrLogger = logger({
|
|
155
|
+
name: 'ssr-logger',
|
|
156
|
+
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
157
|
+
beforeReporters: [],
|
|
158
|
+
reporters: [new BrowserReporter()],
|
|
159
|
+
extensions: [new DevLogsExtension(logs)],
|
|
160
|
+
});
|
|
161
|
+
flushLogs(ssrLogger, logs);
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
deps: {
|
|
165
|
+
logger: LOGGER_TOKEN,
|
|
166
|
+
store: STORE_TOKEN,
|
|
167
|
+
},
|
|
168
|
+
}),
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
export { DevLogsExtension, DevLogsReporter, clientProviders };
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { createPapiMethod } from '@tramvai/papi';
|
|
2
|
+
import { provide, Scope, commandLineListTokens } from '@tramvai/core';
|
|
3
|
+
import { LOGGER_INIT_HOOK, COMBINE_REDUCERS, CONTEXT_TOKEN, LOGGER_TOKEN, STORE_TOKEN } from '@tramvai/tokens-common';
|
|
4
|
+
import { logger, BrowserReporter } from '@tinkoff/logger';
|
|
5
|
+
import { SERVER_MODULE_PAPI_PRIVATE_ROUTE } from '@tramvai/tokens-server';
|
|
6
|
+
import { ENV_MANAGER_TOKEN } from '@tramvai/module-environment';
|
|
7
|
+
import each from '@tinkoff/utils/array/each';
|
|
8
|
+
import split from '@tinkoff/utils/string/split';
|
|
9
|
+
import { LogStore, setLogs } from './LogStore.es.js';
|
|
10
|
+
|
|
11
|
+
class DevLogsReporter {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.logs = [];
|
|
14
|
+
}
|
|
15
|
+
log(logObj) {
|
|
16
|
+
this.logs.push(logObj);
|
|
17
|
+
}
|
|
18
|
+
start() {
|
|
19
|
+
this.reset();
|
|
20
|
+
}
|
|
21
|
+
reset() {
|
|
22
|
+
this.logs = [];
|
|
23
|
+
}
|
|
24
|
+
flush() {
|
|
25
|
+
const flushed = this.logs;
|
|
26
|
+
this.reset();
|
|
27
|
+
return flushed;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class DevLogsExtension {
|
|
31
|
+
constructor(logs) {
|
|
32
|
+
this.logs = [];
|
|
33
|
+
this.logs = logs;
|
|
34
|
+
}
|
|
35
|
+
extend(logObj) {
|
|
36
|
+
const [index] = logObj.args;
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
return this.logs[index];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const serverProviders = [
|
|
42
|
+
provide({
|
|
43
|
+
provide: LOGGER_INIT_HOOK,
|
|
44
|
+
multi: true,
|
|
45
|
+
useFactory({ reporter }) {
|
|
46
|
+
return (loggerInstance) => {
|
|
47
|
+
loggerInstance.addReporter(reporter);
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
deps: {
|
|
51
|
+
reporter: 'ssrDevReporter',
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
provide({
|
|
55
|
+
provide: 'ssrDevReporter',
|
|
56
|
+
scope: Scope.SINGLETON,
|
|
57
|
+
useClass: DevLogsReporter,
|
|
58
|
+
}),
|
|
59
|
+
provide({
|
|
60
|
+
provide: COMBINE_REDUCERS,
|
|
61
|
+
multi: true,
|
|
62
|
+
useValue: LogStore,
|
|
63
|
+
}),
|
|
64
|
+
provide({
|
|
65
|
+
provide: commandLineListTokens.customerStart,
|
|
66
|
+
multi: true,
|
|
67
|
+
useFactory: ({ reporter }) => {
|
|
68
|
+
return function startSsrLogs() {
|
|
69
|
+
reporter.start();
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
deps: {
|
|
73
|
+
reporter: 'ssrDevReporter',
|
|
74
|
+
},
|
|
75
|
+
}),
|
|
76
|
+
provide({
|
|
77
|
+
provide: commandLineListTokens.generatePage,
|
|
78
|
+
multi: true,
|
|
79
|
+
useFactory: ({ context, reporter }) => {
|
|
80
|
+
const logs = reporter.flush();
|
|
81
|
+
return function endSsrLogs() {
|
|
82
|
+
return context.dispatch(setLogs(logs));
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
deps: {
|
|
86
|
+
context: CONTEXT_TOKEN,
|
|
87
|
+
reporter: 'ssrDevReporter',
|
|
88
|
+
},
|
|
89
|
+
}),
|
|
90
|
+
provide({
|
|
91
|
+
provide: SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
92
|
+
multi: true,
|
|
93
|
+
useFactory: ({ environmentManager }) => {
|
|
94
|
+
return createPapiMethod({
|
|
95
|
+
method: 'get',
|
|
96
|
+
path: '/logger',
|
|
97
|
+
async handler({ parsedUrl: { query } }) {
|
|
98
|
+
const { mode, level, enable } = query;
|
|
99
|
+
const applyDefaultConfig = mode === 'default';
|
|
100
|
+
const clearCurrentConfig = mode || level || enable;
|
|
101
|
+
let debugLevel;
|
|
102
|
+
let debugEnable;
|
|
103
|
+
if (applyDefaultConfig) {
|
|
104
|
+
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
105
|
+
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
106
|
+
}
|
|
107
|
+
if (level) {
|
|
108
|
+
debugLevel = level;
|
|
109
|
+
}
|
|
110
|
+
if (enable) {
|
|
111
|
+
debugEnable = enable;
|
|
112
|
+
}
|
|
113
|
+
if (clearCurrentConfig) {
|
|
114
|
+
logger.clear();
|
|
115
|
+
}
|
|
116
|
+
if (debugLevel) {
|
|
117
|
+
logger.setLevel(debugLevel);
|
|
118
|
+
}
|
|
119
|
+
if (debugEnable) {
|
|
120
|
+
each((val) => {
|
|
121
|
+
const [lvl, name] = val.split(':');
|
|
122
|
+
logger.enable(lvl, name);
|
|
123
|
+
}, split(',', debugEnable));
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
deps: {
|
|
129
|
+
environmentManager: ENV_MANAGER_TOKEN,
|
|
130
|
+
},
|
|
131
|
+
}),
|
|
132
|
+
];
|
|
133
|
+
const flushLogs = (ssrLogger, logs) => {
|
|
134
|
+
if (logs && logs.length) {
|
|
135
|
+
// eslint-disable-next-line no-console
|
|
136
|
+
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
137
|
+
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
138
|
+
// eslint-disable-next-line no-console
|
|
139
|
+
console.groupEnd();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
[
|
|
143
|
+
provide({
|
|
144
|
+
provide: COMBINE_REDUCERS,
|
|
145
|
+
multi: true,
|
|
146
|
+
useValue: LogStore,
|
|
147
|
+
}),
|
|
148
|
+
provide({
|
|
149
|
+
provide: commandLineListTokens.customerStart,
|
|
150
|
+
multi: true,
|
|
151
|
+
useFactory: ({ logger, store }) => {
|
|
152
|
+
return function rehydrateSsrDevLogs() {
|
|
153
|
+
const logs = store.getState(LogStore);
|
|
154
|
+
const ssrLogger = logger({
|
|
155
|
+
name: 'ssr-logger',
|
|
156
|
+
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
157
|
+
beforeReporters: [],
|
|
158
|
+
reporters: [new BrowserReporter()],
|
|
159
|
+
extensions: [new DevLogsExtension(logs)],
|
|
160
|
+
});
|
|
161
|
+
flushLogs(ssrLogger, logs);
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
deps: {
|
|
165
|
+
logger: LOGGER_TOKEN,
|
|
166
|
+
store: STORE_TOKEN,
|
|
167
|
+
},
|
|
168
|
+
}),
|
|
169
|
+
];
|
|
170
|
+
|
|
171
|
+
export { DevLogsExtension, DevLogsReporter, serverProviders };
|
package/lib/devLogs.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var papi = require('@tramvai/papi');
|
|
6
|
+
var core = require('@tramvai/core');
|
|
7
|
+
var tokensCommon = require('@tramvai/tokens-common');
|
|
8
|
+
var logger = require('@tinkoff/logger');
|
|
9
|
+
var tokensServer = require('@tramvai/tokens-server');
|
|
10
|
+
var moduleEnvironment = require('@tramvai/module-environment');
|
|
11
|
+
var each = require('@tinkoff/utils/array/each');
|
|
12
|
+
var split = require('@tinkoff/utils/string/split');
|
|
13
|
+
var LogStore = require('./LogStore.js');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var each__default = /*#__PURE__*/_interopDefaultLegacy(each);
|
|
18
|
+
var split__default = /*#__PURE__*/_interopDefaultLegacy(split);
|
|
19
|
+
|
|
20
|
+
class DevLogsReporter {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.logs = [];
|
|
23
|
+
}
|
|
24
|
+
log(logObj) {
|
|
25
|
+
this.logs.push(logObj);
|
|
26
|
+
}
|
|
27
|
+
start() {
|
|
28
|
+
this.reset();
|
|
29
|
+
}
|
|
30
|
+
reset() {
|
|
31
|
+
this.logs = [];
|
|
32
|
+
}
|
|
33
|
+
flush() {
|
|
34
|
+
const flushed = this.logs;
|
|
35
|
+
this.reset();
|
|
36
|
+
return flushed;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class DevLogsExtension {
|
|
40
|
+
constructor(logs) {
|
|
41
|
+
this.logs = [];
|
|
42
|
+
this.logs = logs;
|
|
43
|
+
}
|
|
44
|
+
extend(logObj) {
|
|
45
|
+
const [index] = logObj.args;
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
return this.logs[index];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const serverProviders = [
|
|
51
|
+
core.provide({
|
|
52
|
+
provide: tokensCommon.LOGGER_INIT_HOOK,
|
|
53
|
+
multi: true,
|
|
54
|
+
useFactory({ reporter }) {
|
|
55
|
+
return (loggerInstance) => {
|
|
56
|
+
loggerInstance.addReporter(reporter);
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
deps: {
|
|
60
|
+
reporter: 'ssrDevReporter',
|
|
61
|
+
},
|
|
62
|
+
}),
|
|
63
|
+
core.provide({
|
|
64
|
+
provide: 'ssrDevReporter',
|
|
65
|
+
scope: core.Scope.SINGLETON,
|
|
66
|
+
useClass: DevLogsReporter,
|
|
67
|
+
}),
|
|
68
|
+
core.provide({
|
|
69
|
+
provide: tokensCommon.COMBINE_REDUCERS,
|
|
70
|
+
multi: true,
|
|
71
|
+
useValue: LogStore.LogStore,
|
|
72
|
+
}),
|
|
73
|
+
core.provide({
|
|
74
|
+
provide: core.commandLineListTokens.customerStart,
|
|
75
|
+
multi: true,
|
|
76
|
+
useFactory: ({ reporter }) => {
|
|
77
|
+
return function startSsrLogs() {
|
|
78
|
+
reporter.start();
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
deps: {
|
|
82
|
+
reporter: 'ssrDevReporter',
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
core.provide({
|
|
86
|
+
provide: core.commandLineListTokens.generatePage,
|
|
87
|
+
multi: true,
|
|
88
|
+
useFactory: ({ context, reporter }) => {
|
|
89
|
+
const logs = reporter.flush();
|
|
90
|
+
return function endSsrLogs() {
|
|
91
|
+
return context.dispatch(LogStore.setLogs(logs));
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
deps: {
|
|
95
|
+
context: tokensCommon.CONTEXT_TOKEN,
|
|
96
|
+
reporter: 'ssrDevReporter',
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
core.provide({
|
|
100
|
+
provide: tokensServer.SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
101
|
+
multi: true,
|
|
102
|
+
useFactory: ({ environmentManager }) => {
|
|
103
|
+
return papi.createPapiMethod({
|
|
104
|
+
method: 'get',
|
|
105
|
+
path: '/logger',
|
|
106
|
+
async handler({ parsedUrl: { query } }) {
|
|
107
|
+
const { mode, level, enable } = query;
|
|
108
|
+
const applyDefaultConfig = mode === 'default';
|
|
109
|
+
const clearCurrentConfig = mode || level || enable;
|
|
110
|
+
let debugLevel;
|
|
111
|
+
let debugEnable;
|
|
112
|
+
if (applyDefaultConfig) {
|
|
113
|
+
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
114
|
+
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
115
|
+
}
|
|
116
|
+
if (level) {
|
|
117
|
+
debugLevel = level;
|
|
118
|
+
}
|
|
119
|
+
if (enable) {
|
|
120
|
+
debugEnable = enable;
|
|
121
|
+
}
|
|
122
|
+
if (clearCurrentConfig) {
|
|
123
|
+
logger.logger.clear();
|
|
124
|
+
}
|
|
125
|
+
if (debugLevel) {
|
|
126
|
+
logger.logger.setLevel(debugLevel);
|
|
127
|
+
}
|
|
128
|
+
if (debugEnable) {
|
|
129
|
+
each__default["default"]((val) => {
|
|
130
|
+
const [lvl, name] = val.split(':');
|
|
131
|
+
logger.logger.enable(lvl, name);
|
|
132
|
+
}, split__default["default"](',', debugEnable));
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
},
|
|
137
|
+
deps: {
|
|
138
|
+
environmentManager: moduleEnvironment.ENV_MANAGER_TOKEN,
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
];
|
|
142
|
+
const flushLogs = (ssrLogger, logs) => {
|
|
143
|
+
if (logs && logs.length) {
|
|
144
|
+
// eslint-disable-next-line no-console
|
|
145
|
+
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
146
|
+
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
147
|
+
// eslint-disable-next-line no-console
|
|
148
|
+
console.groupEnd();
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
[
|
|
152
|
+
core.provide({
|
|
153
|
+
provide: tokensCommon.COMBINE_REDUCERS,
|
|
154
|
+
multi: true,
|
|
155
|
+
useValue: LogStore.LogStore,
|
|
156
|
+
}),
|
|
157
|
+
core.provide({
|
|
158
|
+
provide: core.commandLineListTokens.customerStart,
|
|
159
|
+
multi: true,
|
|
160
|
+
useFactory: ({ logger: logger$1, store }) => {
|
|
161
|
+
return function rehydrateSsrDevLogs() {
|
|
162
|
+
const logs = store.getState(LogStore.LogStore);
|
|
163
|
+
const ssrLogger = logger$1({
|
|
164
|
+
name: 'ssr-logger',
|
|
165
|
+
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
166
|
+
beforeReporters: [],
|
|
167
|
+
reporters: [new logger.BrowserReporter()],
|
|
168
|
+
extensions: [new DevLogsExtension(logs)],
|
|
169
|
+
});
|
|
170
|
+
flushLogs(ssrLogger, logs);
|
|
171
|
+
};
|
|
172
|
+
},
|
|
173
|
+
deps: {
|
|
174
|
+
logger: tokensCommon.LOGGER_TOKEN,
|
|
175
|
+
store: tokensCommon.STORE_TOKEN,
|
|
176
|
+
},
|
|
177
|
+
}),
|
|
178
|
+
];
|
|
179
|
+
|
|
180
|
+
exports.DevLogsExtension = DevLogsExtension;
|
|
181
|
+
exports.DevLogsReporter = DevLogsReporter;
|
|
182
|
+
exports.serverProviders = serverProviders;
|
package/lib/server.es.js
CHANGED
|
@@ -3,180 +3,14 @@ import each from '@tinkoff/utils/array/each';
|
|
|
3
3
|
import split from '@tinkoff/utils/string/split';
|
|
4
4
|
import { hostname } from 'os';
|
|
5
5
|
import env from 'std-env';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { Module, Scope } from '@tramvai/core';
|
|
7
|
+
import { LOGGER_TOKEN, LOGGER_INIT_HOOK } from '@tramvai/tokens-common';
|
|
8
8
|
export { LOGGER_TOKEN } from '@tramvai/tokens-common';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const setLogs = createEvent('setLogs');
|
|
16
|
-
const LogStore = createReducer('devLogs', []).on(setLogs, (_, logs) => logs);
|
|
17
|
-
|
|
18
|
-
class DevLogsReporter {
|
|
19
|
-
constructor() {
|
|
20
|
-
this.logs = [];
|
|
21
|
-
}
|
|
22
|
-
log(logObj) {
|
|
23
|
-
this.logs.push(logObj);
|
|
24
|
-
}
|
|
25
|
-
start() {
|
|
26
|
-
this.reset();
|
|
27
|
-
}
|
|
28
|
-
reset() {
|
|
29
|
-
this.logs = [];
|
|
30
|
-
}
|
|
31
|
-
flush() {
|
|
32
|
-
const flushed = this.logs;
|
|
33
|
-
this.reset();
|
|
34
|
-
return flushed;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
class DevLogsExtension {
|
|
38
|
-
constructor(logs) {
|
|
39
|
-
this.logs = [];
|
|
40
|
-
this.logs = logs;
|
|
41
|
-
}
|
|
42
|
-
extend(logObj) {
|
|
43
|
-
const [index] = logObj.args;
|
|
44
|
-
// @ts-ignore
|
|
45
|
-
return this.logs[index];
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const serverProviders = [
|
|
49
|
-
provide({
|
|
50
|
-
provide: LOGGER_INIT_HOOK,
|
|
51
|
-
multi: true,
|
|
52
|
-
useFactory({ reporter }) {
|
|
53
|
-
return (loggerInstance) => {
|
|
54
|
-
loggerInstance.addReporter(reporter);
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
deps: {
|
|
58
|
-
reporter: 'ssrDevReporter',
|
|
59
|
-
},
|
|
60
|
-
}),
|
|
61
|
-
provide({
|
|
62
|
-
provide: 'ssrDevReporter',
|
|
63
|
-
scope: Scope.SINGLETON,
|
|
64
|
-
useClass: DevLogsReporter,
|
|
65
|
-
}),
|
|
66
|
-
provide({
|
|
67
|
-
provide: COMBINE_REDUCERS,
|
|
68
|
-
multi: true,
|
|
69
|
-
useValue: LogStore,
|
|
70
|
-
}),
|
|
71
|
-
provide({
|
|
72
|
-
provide: commandLineListTokens.customerStart,
|
|
73
|
-
multi: true,
|
|
74
|
-
useFactory: ({ reporter }) => {
|
|
75
|
-
return function startSsrLogs() {
|
|
76
|
-
reporter.start();
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
deps: {
|
|
80
|
-
reporter: 'ssrDevReporter',
|
|
81
|
-
},
|
|
82
|
-
}),
|
|
83
|
-
provide({
|
|
84
|
-
provide: commandLineListTokens.generatePage,
|
|
85
|
-
multi: true,
|
|
86
|
-
useFactory: ({ context, reporter }) => {
|
|
87
|
-
const logs = reporter.flush();
|
|
88
|
-
return function endSsrLogs() {
|
|
89
|
-
return context.dispatch(setLogs(logs));
|
|
90
|
-
};
|
|
91
|
-
},
|
|
92
|
-
deps: {
|
|
93
|
-
context: CONTEXT_TOKEN,
|
|
94
|
-
reporter: 'ssrDevReporter',
|
|
95
|
-
},
|
|
96
|
-
}),
|
|
97
|
-
provide({
|
|
98
|
-
provide: SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
99
|
-
multi: true,
|
|
100
|
-
useFactory: ({ environmentManager }) => {
|
|
101
|
-
return createPapiMethod({
|
|
102
|
-
method: 'get',
|
|
103
|
-
path: '/logger',
|
|
104
|
-
async handler({ parsedUrl: { query } }) {
|
|
105
|
-
const { mode, level, enable } = query;
|
|
106
|
-
const applyDefaultConfig = mode === 'default';
|
|
107
|
-
const clearCurrentConfig = mode || level || enable;
|
|
108
|
-
let debugLevel;
|
|
109
|
-
let debugEnable;
|
|
110
|
-
if (applyDefaultConfig) {
|
|
111
|
-
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
112
|
-
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
113
|
-
}
|
|
114
|
-
if (level) {
|
|
115
|
-
debugLevel = level;
|
|
116
|
-
}
|
|
117
|
-
if (enable) {
|
|
118
|
-
debugEnable = enable;
|
|
119
|
-
}
|
|
120
|
-
if (clearCurrentConfig) {
|
|
121
|
-
logger$1.clear();
|
|
122
|
-
}
|
|
123
|
-
if (debugLevel) {
|
|
124
|
-
logger$1.setLevel(debugLevel);
|
|
125
|
-
}
|
|
126
|
-
if (debugEnable) {
|
|
127
|
-
each((val) => {
|
|
128
|
-
const [lvl, name] = val.split(':');
|
|
129
|
-
logger$1.enable(lvl, name);
|
|
130
|
-
}, split(',', debugEnable));
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
},
|
|
135
|
-
deps: {
|
|
136
|
-
environmentManager: ENV_MANAGER_TOKEN,
|
|
137
|
-
},
|
|
138
|
-
}),
|
|
139
|
-
];
|
|
140
|
-
const flushLogs = (ssrLogger, logs) => {
|
|
141
|
-
if (logs && logs.length) {
|
|
142
|
-
// eslint-disable-next-line no-console
|
|
143
|
-
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
144
|
-
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
145
|
-
// eslint-disable-next-line no-console
|
|
146
|
-
console.groupEnd();
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
[
|
|
150
|
-
provide({
|
|
151
|
-
provide: COMBINE_REDUCERS,
|
|
152
|
-
multi: true,
|
|
153
|
-
useValue: LogStore,
|
|
154
|
-
}),
|
|
155
|
-
provide({
|
|
156
|
-
provide: commandLineListTokens.customerStart,
|
|
157
|
-
multi: true,
|
|
158
|
-
useFactory: ({ logger, store }) => {
|
|
159
|
-
return function rehydrateSsrDevLogs() {
|
|
160
|
-
const logs = store.getState(LogStore);
|
|
161
|
-
const ssrLogger = logger({
|
|
162
|
-
name: 'ssr-logger',
|
|
163
|
-
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
164
|
-
beforeReporters: [],
|
|
165
|
-
reporters: [new BrowserReporter()],
|
|
166
|
-
extensions: [new DevLogsExtension(logs)],
|
|
167
|
-
});
|
|
168
|
-
flushLogs(ssrLogger, logs);
|
|
169
|
-
};
|
|
170
|
-
},
|
|
171
|
-
deps: {
|
|
172
|
-
logger: LOGGER_TOKEN,
|
|
173
|
-
store: STORE_TOKEN,
|
|
174
|
-
},
|
|
175
|
-
}),
|
|
176
|
-
];
|
|
177
|
-
|
|
178
|
-
const LOGGER_NAME = '';
|
|
179
|
-
const LOGGER_KEY = 'tramvai';
|
|
9
|
+
import { ENV_USED_TOKEN } from '@tramvai/module-environment';
|
|
10
|
+
import { NodeBasicReporter, NodeDevReporter, JSONReporter, createLoggerFactory, LEVELS } from '@tinkoff/logger';
|
|
11
|
+
import { serverProviders } from './devLogs.es.js';
|
|
12
|
+
import { LOGGER_NAME, LOGGER_KEY } from './constants.es.js';
|
|
13
|
+
export { LogStore, setLogs } from './LogStore.es.js';
|
|
180
14
|
|
|
181
15
|
const DefaultReporter = env.ci || env.test ? NodeBasicReporter : NodeDevReporter;
|
|
182
16
|
const reporter = process.env.DEBUG_PLAIN || process.env.NODE_ENV !== 'production'
|
|
@@ -252,4 +86,4 @@ LogModule = __decorate([
|
|
|
252
86
|
})
|
|
253
87
|
], LogModule);
|
|
254
88
|
|
|
255
|
-
export { LogModule,
|
|
89
|
+
export { LogModule, factory, logger };
|
package/lib/server.js
CHANGED
|
@@ -11,9 +11,9 @@ var core = require('@tramvai/core');
|
|
|
11
11
|
var tokensCommon = require('@tramvai/tokens-common');
|
|
12
12
|
var moduleEnvironment = require('@tramvai/module-environment');
|
|
13
13
|
var logger$1 = require('@tinkoff/logger');
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
14
|
+
var devLogs = require('./devLogs.js');
|
|
15
|
+
var constants = require('./constants.js');
|
|
16
|
+
var LogStore = require('./LogStore.js');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
19
|
|
|
@@ -21,179 +21,13 @@ var each__default = /*#__PURE__*/_interopDefaultLegacy(each);
|
|
|
21
21
|
var split__default = /*#__PURE__*/_interopDefaultLegacy(split);
|
|
22
22
|
var env__default = /*#__PURE__*/_interopDefaultLegacy(env);
|
|
23
23
|
|
|
24
|
-
const setLogs = state.createEvent('setLogs');
|
|
25
|
-
const LogStore = state.createReducer('devLogs', []).on(setLogs, (_, logs) => logs);
|
|
26
|
-
|
|
27
|
-
class DevLogsReporter {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.logs = [];
|
|
30
|
-
}
|
|
31
|
-
log(logObj) {
|
|
32
|
-
this.logs.push(logObj);
|
|
33
|
-
}
|
|
34
|
-
start() {
|
|
35
|
-
this.reset();
|
|
36
|
-
}
|
|
37
|
-
reset() {
|
|
38
|
-
this.logs = [];
|
|
39
|
-
}
|
|
40
|
-
flush() {
|
|
41
|
-
const flushed = this.logs;
|
|
42
|
-
this.reset();
|
|
43
|
-
return flushed;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
class DevLogsExtension {
|
|
47
|
-
constructor(logs) {
|
|
48
|
-
this.logs = [];
|
|
49
|
-
this.logs = logs;
|
|
50
|
-
}
|
|
51
|
-
extend(logObj) {
|
|
52
|
-
const [index] = logObj.args;
|
|
53
|
-
// @ts-ignore
|
|
54
|
-
return this.logs[index];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const serverProviders = [
|
|
58
|
-
core.provide({
|
|
59
|
-
provide: tokensCommon.LOGGER_INIT_HOOK,
|
|
60
|
-
multi: true,
|
|
61
|
-
useFactory({ reporter }) {
|
|
62
|
-
return (loggerInstance) => {
|
|
63
|
-
loggerInstance.addReporter(reporter);
|
|
64
|
-
};
|
|
65
|
-
},
|
|
66
|
-
deps: {
|
|
67
|
-
reporter: 'ssrDevReporter',
|
|
68
|
-
},
|
|
69
|
-
}),
|
|
70
|
-
core.provide({
|
|
71
|
-
provide: 'ssrDevReporter',
|
|
72
|
-
scope: core.Scope.SINGLETON,
|
|
73
|
-
useClass: DevLogsReporter,
|
|
74
|
-
}),
|
|
75
|
-
core.provide({
|
|
76
|
-
provide: tokensCommon.COMBINE_REDUCERS,
|
|
77
|
-
multi: true,
|
|
78
|
-
useValue: LogStore,
|
|
79
|
-
}),
|
|
80
|
-
core.provide({
|
|
81
|
-
provide: core.commandLineListTokens.customerStart,
|
|
82
|
-
multi: true,
|
|
83
|
-
useFactory: ({ reporter }) => {
|
|
84
|
-
return function startSsrLogs() {
|
|
85
|
-
reporter.start();
|
|
86
|
-
};
|
|
87
|
-
},
|
|
88
|
-
deps: {
|
|
89
|
-
reporter: 'ssrDevReporter',
|
|
90
|
-
},
|
|
91
|
-
}),
|
|
92
|
-
core.provide({
|
|
93
|
-
provide: core.commandLineListTokens.generatePage,
|
|
94
|
-
multi: true,
|
|
95
|
-
useFactory: ({ context, reporter }) => {
|
|
96
|
-
const logs = reporter.flush();
|
|
97
|
-
return function endSsrLogs() {
|
|
98
|
-
return context.dispatch(setLogs(logs));
|
|
99
|
-
};
|
|
100
|
-
},
|
|
101
|
-
deps: {
|
|
102
|
-
context: tokensCommon.CONTEXT_TOKEN,
|
|
103
|
-
reporter: 'ssrDevReporter',
|
|
104
|
-
},
|
|
105
|
-
}),
|
|
106
|
-
core.provide({
|
|
107
|
-
provide: tokensServer.SERVER_MODULE_PAPI_PRIVATE_ROUTE,
|
|
108
|
-
multi: true,
|
|
109
|
-
useFactory: ({ environmentManager }) => {
|
|
110
|
-
return papi.createPapiMethod({
|
|
111
|
-
method: 'get',
|
|
112
|
-
path: '/logger',
|
|
113
|
-
async handler({ parsedUrl: { query } }) {
|
|
114
|
-
const { mode, level, enable } = query;
|
|
115
|
-
const applyDefaultConfig = mode === 'default';
|
|
116
|
-
const clearCurrentConfig = mode || level || enable;
|
|
117
|
-
let debugLevel;
|
|
118
|
-
let debugEnable;
|
|
119
|
-
if (applyDefaultConfig) {
|
|
120
|
-
debugLevel = environmentManager.get('DEBUG_LEVEL');
|
|
121
|
-
debugEnable = environmentManager.get('DEBUG_ENABLE');
|
|
122
|
-
}
|
|
123
|
-
if (level) {
|
|
124
|
-
debugLevel = level;
|
|
125
|
-
}
|
|
126
|
-
if (enable) {
|
|
127
|
-
debugEnable = enable;
|
|
128
|
-
}
|
|
129
|
-
if (clearCurrentConfig) {
|
|
130
|
-
logger$1.logger.clear();
|
|
131
|
-
}
|
|
132
|
-
if (debugLevel) {
|
|
133
|
-
logger$1.logger.setLevel(debugLevel);
|
|
134
|
-
}
|
|
135
|
-
if (debugEnable) {
|
|
136
|
-
each__default["default"]((val) => {
|
|
137
|
-
const [lvl, name] = val.split(':');
|
|
138
|
-
logger$1.logger.enable(lvl, name);
|
|
139
|
-
}, split__default["default"](',', debugEnable));
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
});
|
|
143
|
-
},
|
|
144
|
-
deps: {
|
|
145
|
-
environmentManager: moduleEnvironment.ENV_MANAGER_TOKEN,
|
|
146
|
-
},
|
|
147
|
-
}),
|
|
148
|
-
];
|
|
149
|
-
const flushLogs = (ssrLogger, logs) => {
|
|
150
|
-
if (logs && logs.length) {
|
|
151
|
-
// eslint-disable-next-line no-console
|
|
152
|
-
console.groupCollapsed('%c🚀 Tramvai SSR Logs', 'font-size: 110%');
|
|
153
|
-
logs.forEach((logObj, index) => ssrLogger[logObj.type](index));
|
|
154
|
-
// eslint-disable-next-line no-console
|
|
155
|
-
console.groupEnd();
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
[
|
|
159
|
-
core.provide({
|
|
160
|
-
provide: tokensCommon.COMBINE_REDUCERS,
|
|
161
|
-
multi: true,
|
|
162
|
-
useValue: LogStore,
|
|
163
|
-
}),
|
|
164
|
-
core.provide({
|
|
165
|
-
provide: core.commandLineListTokens.customerStart,
|
|
166
|
-
multi: true,
|
|
167
|
-
useFactory: ({ logger, store }) => {
|
|
168
|
-
return function rehydrateSsrDevLogs() {
|
|
169
|
-
const logs = store.getState(LogStore);
|
|
170
|
-
const ssrLogger = logger({
|
|
171
|
-
name: 'ssr-logger',
|
|
172
|
-
// сетим пустой массив в beforeReporters, чтобы не подтягивать настройки рутового логгера с RemoteReporter
|
|
173
|
-
beforeReporters: [],
|
|
174
|
-
reporters: [new logger$1.BrowserReporter()],
|
|
175
|
-
extensions: [new DevLogsExtension(logs)],
|
|
176
|
-
});
|
|
177
|
-
flushLogs(ssrLogger, logs);
|
|
178
|
-
};
|
|
179
|
-
},
|
|
180
|
-
deps: {
|
|
181
|
-
logger: tokensCommon.LOGGER_TOKEN,
|
|
182
|
-
store: tokensCommon.STORE_TOKEN,
|
|
183
|
-
},
|
|
184
|
-
}),
|
|
185
|
-
];
|
|
186
|
-
|
|
187
|
-
const LOGGER_NAME = '';
|
|
188
|
-
const LOGGER_KEY = 'tramvai';
|
|
189
|
-
|
|
190
24
|
const DefaultReporter = env__default["default"].ci || env__default["default"].test ? logger$1.NodeBasicReporter : logger$1.NodeDevReporter;
|
|
191
25
|
const reporter = process.env.DEBUG_PLAIN || process.env.NODE_ENV !== 'production'
|
|
192
26
|
? new DefaultReporter()
|
|
193
27
|
: new logger$1.JSONReporter();
|
|
194
28
|
const logger = logger$1.createLoggerFactory({
|
|
195
|
-
name: LOGGER_NAME,
|
|
196
|
-
key: LOGGER_KEY,
|
|
29
|
+
name: constants.LOGGER_NAME,
|
|
30
|
+
key: constants.LOGGER_KEY,
|
|
197
31
|
reporters: [reporter],
|
|
198
32
|
defaults: {
|
|
199
33
|
pid: process.pid,
|
|
@@ -229,7 +63,7 @@ exports.LogModule = class LogModule {
|
|
|
229
63
|
exports.LogModule = tslib.__decorate([
|
|
230
64
|
core.Module({
|
|
231
65
|
providers: [
|
|
232
|
-
...(process.env.NODE_ENV === 'development' ? serverProviders : []),
|
|
66
|
+
...(process.env.NODE_ENV === 'development' ? devLogs.serverProviders : []),
|
|
233
67
|
{
|
|
234
68
|
provide: tokensCommon.LOGGER_TOKEN,
|
|
235
69
|
scope: core.Scope.SINGLETON,
|
|
@@ -265,7 +99,7 @@ Object.defineProperty(exports, 'LOGGER_TOKEN', {
|
|
|
265
99
|
enumerable: true,
|
|
266
100
|
get: function () { return tokensCommon.LOGGER_TOKEN; }
|
|
267
101
|
});
|
|
268
|
-
exports.LogStore = LogStore;
|
|
102
|
+
exports.LogStore = LogStore.LogStore;
|
|
103
|
+
exports.setLogs = LogStore.setLogs;
|
|
269
104
|
exports.factory = factory;
|
|
270
105
|
exports.logger = logger;
|
|
271
|
-
exports.setLogs = setLogs;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-log",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.72.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "lib/browser.js",
|
|
6
6
|
"main": "lib/server.js",
|
|
@@ -14,21 +14,20 @@
|
|
|
14
14
|
"url": "git@github.com:Tinkoff/tramvai.git"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "tramvai-build --
|
|
18
|
-
"watch": "tsc -w"
|
|
19
|
-
"build-for-publish": "true"
|
|
17
|
+
"build": "tramvai-build --forPublish --preserveModules",
|
|
18
|
+
"watch": "tsc -w"
|
|
20
19
|
},
|
|
21
20
|
"dependencies": {
|
|
22
|
-
"@tinkoff/logger": "0.10.
|
|
21
|
+
"@tinkoff/logger": "0.10.58"
|
|
23
22
|
},
|
|
24
23
|
"peerDependencies": {
|
|
25
24
|
"@tinkoff/utils": "^2.1.2",
|
|
26
|
-
"@tramvai/core": "2.
|
|
27
|
-
"@tramvai/module-environment": "2.
|
|
28
|
-
"@tramvai/papi": "2.
|
|
29
|
-
"@tramvai/state": "2.
|
|
30
|
-
"@tramvai/tokens-common": "2.
|
|
31
|
-
"@tramvai/tokens-server": "2.
|
|
25
|
+
"@tramvai/core": "2.72.3",
|
|
26
|
+
"@tramvai/module-environment": "2.72.3",
|
|
27
|
+
"@tramvai/papi": "2.72.3",
|
|
28
|
+
"@tramvai/state": "2.72.3",
|
|
29
|
+
"@tramvai/tokens-common": "2.72.3",
|
|
30
|
+
"@tramvai/tokens-server": "2.72.3",
|
|
32
31
|
"std-env": "^2.2.1",
|
|
33
32
|
"tslib": "^2.4.0"
|
|
34
33
|
},
|