specmatic 0.72.7 → 0.72.8
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/dist/common/logger.js +18 -4
- package/package.json +2 -1
- package/src/common/__tests__/logger.ts +70 -49
- package/src/common/logger.ts +32 -17
package/dist/common/logger.js
CHANGED
|
@@ -23,17 +23,31 @@ function getSpecmaticConfig() {
|
|
|
23
23
|
try {
|
|
24
24
|
packageJsonContent = _fs["default"].readFileSync(packageJsonPath);
|
|
25
25
|
} catch (error) {
|
|
26
|
-
packageJsonContent =
|
|
26
|
+
packageJsonContent = '{}';
|
|
27
27
|
}
|
|
28
28
|
var packageConfig = JSON.parse(packageJsonContent);
|
|
29
29
|
specmaticConfig = packageConfig.specmatic;
|
|
30
30
|
}
|
|
31
31
|
return specmaticConfig || {};
|
|
32
32
|
}
|
|
33
|
+
function getLogLevel() {
|
|
34
|
+
var logLevel;
|
|
35
|
+
if (process.env.SPECMATIC_LOG_LEVEL) {
|
|
36
|
+
logLevel = process.env.SPECMATIC_LOG_LEVEL;
|
|
37
|
+
}
|
|
38
|
+
if (!logLevel || !_winston.config.syslog.levels[logLevel]) {
|
|
39
|
+
var specmaticConfig = getSpecmaticConfig();
|
|
40
|
+
logLevel = specmaticConfig.logLevel;
|
|
41
|
+
}
|
|
42
|
+
if (!logLevel || !_winston.config.syslog.levels[logLevel]) {
|
|
43
|
+
logLevel = 'warn';
|
|
44
|
+
}
|
|
45
|
+
return logLevel;
|
|
46
|
+
}
|
|
33
47
|
function initLogger() {
|
|
34
|
-
var
|
|
48
|
+
var logLevel = getLogLevel();
|
|
35
49
|
var logger = (0, _winston.createLogger)({
|
|
36
|
-
level:
|
|
50
|
+
level: logLevel,
|
|
37
51
|
format: _winston.format.combine(_winston.format.label({
|
|
38
52
|
label: 'specmatic'
|
|
39
53
|
}), _winston.format.timestamp({
|
|
@@ -45,4 +59,4 @@ function initLogger() {
|
|
|
45
59
|
}
|
|
46
60
|
var _default = initLogger();
|
|
47
61
|
exports["default"] = _default;
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luc3RvbiIsInJlcXVpcmUiLCJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImxvZ0Zvcm1hdCIsImZvcm1hdCIsInByaW50ZiIsIl9yZWYiLCJsZXZlbCIsIm1lc3NhZ2UiLCJsYWJlbCIsInRpbWVzdGFtcCIsImNvbmNhdCIsImdldFNwZWNtYXRpY0NvbmZpZyIsInBhY2thZ2VKc29uUGF0aCIsInNwZWNtYXRpY0NvbmZpZyIsImZzIiwiZXhpc3RzU3luYyIsInBhY2thZ2VKc29uQ29udGVudCIsInJlYWRGaWxlU3luYyIsImVycm9yIiwicGFja2FnZUNvbmZpZyIsIkpTT04iLCJwYXJzZSIsInNwZWNtYXRpYyIsImdldExvZ0xldmVsIiwibG9nTGV2ZWwiLCJwcm9jZXNzIiwiZW52IiwiU1BFQ01BVElDX0xPR19MRVZFTCIsImNvbmZpZyIsInN5c2xvZyIsImxldmVscyIsImluaXRMb2dnZXIiLCJsb2dnZXIiLCJjcmVhdGVMb2dnZXIiLCJjb21iaW5lIiwidHJhbnNwb3J0cyIsIkNvbnNvbGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcsIGNyZWF0ZUxvZ2dlciwgZm9ybWF0LCB0cmFuc3BvcnRzIH0gZnJvbSAnd2luc3RvbidcbmltcG9ydCBmcyBmcm9tICdmcydcblxuY29uc3QgbG9nRm9ybWF0ID0gZm9ybWF0LnByaW50ZigoeyBsZXZlbCwgbWVzc2FnZSwgbGFiZWwsIHRpbWVzdGFtcCB9KSA9PiB7XG4gICAgcmV0dXJuIGBbJHtsYWJlbH1dICR7dGltZXN0YW1wfSAke2xldmVsfTogJHttZXNzYWdlfWBcbn0pXG5cbmZ1bmN0aW9uIGdldFNwZWNtYXRpY0NvbmZpZygpIHtcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSAnLi9wYWNrYWdlLmpzb24nXG4gICAgdmFyIHNwZWNtYXRpY0NvbmZpZ1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICAgICAgbGV0IHBhY2thZ2VKc29uQ29udGVudFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGFja2FnZUpzb25Db250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aClcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHBhY2thZ2VKc29uQ29udGVudCA9ICd7fSdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYWNrYWdlQ29uZmlnID0gSlNPTi5wYXJzZShwYWNrYWdlSnNvbkNvbnRlbnQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICAgIHNwZWNtYXRpY0NvbmZpZyA9IHBhY2thZ2VDb25maWcuc3BlY21hdGljXG4gICAgfVxuICAgIHJldHVybiBzcGVjbWF0aWNDb25maWcgfHwge31cbn1cblxuZnVuY3Rpb24gZ2V0TG9nTGV2ZWwoKSB7XG4gICAgbGV0IGxvZ0xldmVsXG4gICAgaWYgKHByb2Nlc3MuZW52LlNQRUNNQVRJQ19MT0dfTEVWRUwpIHtcbiAgICAgICAgbG9nTGV2ZWwgPSBwcm9jZXNzLmVudi5TUEVDTUFUSUNfTE9HX0xFVkVMXG4gICAgfVxuICAgIGlmICghbG9nTGV2ZWwgfHwgIWNvbmZpZy5zeXNsb2cubGV2ZWxzW2xvZ0xldmVsXSkge1xuICAgICAgICBjb25zdCBzcGVjbWF0aWNDb25maWcgPSBnZXRTcGVjbWF0aWNDb25maWcoKVxuICAgICAgICBsb2dMZXZlbCA9IHNwZWNtYXRpY0NvbmZpZy5sb2dMZXZlbFxuICAgIH1cbiAgICBpZiAoIWxvZ0xldmVsIHx8ICFjb25maWcuc3lzbG9nLmxldmVsc1tsb2dMZXZlbF0pIHtcbiAgICAgICAgbG9nTGV2ZWwgPSAnd2FybidcbiAgICB9XG4gICAgcmV0dXJuIGxvZ0xldmVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0TG9nZ2VyKCkge1xuICAgIGxldCBsb2dMZXZlbCA9IGdldExvZ0xldmVsKClcbiAgICBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoe1xuICAgICAgICBsZXZlbDogbG9nTGV2ZWwsXG4gICAgICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoZm9ybWF0LmxhYmVsKHsgbGFiZWw6ICdzcGVjbWF0aWMnIH0pLCBmb3JtYXQudGltZXN0YW1wKHsgZm9ybWF0OiAnREQtTU0tWVlZWSBISDptbTpzcycgfSksIGxvZ0Zvcm1hdCksXG4gICAgICAgIHRyYW5zcG9ydHM6IFtuZXcgdHJhbnNwb3J0cy5Db25zb2xlKCldLFxuICAgIH0pXG4gICAgcmV0dXJuIGxvZ2dlclxufVxuXG5leHBvcnQgZGVmYXVsdCBpbml0TG9nZ2VyKClcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFtQixTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBRW5CLElBQU1FLFNBQVMsR0FBR0MsZUFBTSxDQUFDQyxNQUFNLENBQUMsVUFBQUMsSUFBQSxFQUEwQztFQUFBLElBQXZDQyxLQUFLLEdBQUFELElBQUEsQ0FBTEMsS0FBSztJQUFFQyxPQUFPLEdBQUFGLElBQUEsQ0FBUEUsT0FBTztJQUFFQyxLQUFLLEdBQUFILElBQUEsQ0FBTEcsS0FBSztJQUFFQyxTQUFTLEdBQUFKLElBQUEsQ0FBVEksU0FBUztFQUMvRCxXQUFBQyxNQUFBLENBQVdGLEtBQUssUUFBQUUsTUFBQSxDQUFLRCxTQUFTLE9BQUFDLE1BQUEsQ0FBSUosS0FBSyxRQUFBSSxNQUFBLENBQUtILE9BQU87QUFDdkQsQ0FBQyxDQUFDO0FBRUYsU0FBU0ksa0JBQWtCQSxDQUFBLEVBQUc7RUFDMUIsSUFBTUMsZUFBZSxHQUFHLGdCQUFnQjtFQUN4QyxJQUFJQyxlQUFlO0VBQ25CLElBQUlDLGNBQUUsQ0FBQ0MsVUFBVSxDQUFDSCxlQUFlLENBQUMsRUFBRTtJQUNoQyxJQUFJSSxrQkFBa0I7SUFDdEIsSUFBSTtNQUNBQSxrQkFBa0IsR0FBR0YsY0FBRSxDQUFDRyxZQUFZLENBQUNMLGVBQWUsQ0FBQztJQUN6RCxDQUFDLENBQUMsT0FBT00sS0FBSyxFQUFFO01BQ1pGLGtCQUFrQixHQUFHLElBQUk7SUFDN0I7SUFDQSxJQUFNRyxhQUFhLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTCxrQkFBdUMsQ0FBQztJQUN6RUgsZUFBZSxHQUFHTSxhQUFhLENBQUNHLFNBQVM7RUFDN0M7RUFDQSxPQUFPVCxlQUFlLElBQUksQ0FBQyxDQUFDO0FBQ2hDO0FBRUEsU0FBU1UsV0FBV0EsQ0FBQSxFQUFHO0VBQ25CLElBQUlDLFFBQVE7RUFDWixJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsbUJBQW1CLEVBQUU7SUFDakNILFFBQVEsR0FBR0MsT0FBTyxDQUFDQyxHQUFHLENBQUNDLG1CQUFtQjtFQUM5QztFQUNBLElBQUksQ0FBQ0gsUUFBUSxJQUFJLENBQUNJLGVBQU0sQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLENBQUNOLFFBQVEsQ0FBQyxFQUFFO0lBQzlDLElBQU1YLGVBQWUsR0FBR0Ysa0JBQWtCLENBQUMsQ0FBQztJQUM1Q2EsUUFBUSxHQUFHWCxlQUFlLENBQUNXLFFBQVE7RUFDdkM7RUFDQSxJQUFJLENBQUNBLFFBQVEsSUFBSSxDQUFDSSxlQUFNLENBQUNDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTixRQUFRLENBQUMsRUFBRTtJQUM5Q0EsUUFBUSxHQUFHLE1BQU07RUFDckI7RUFDQSxPQUFPQSxRQUFRO0FBQ25CO0FBRU8sU0FBU08sVUFBVUEsQ0FBQSxFQUFHO0VBQ3pCLElBQUlQLFFBQVEsR0FBR0QsV0FBVyxDQUFDLENBQUM7RUFDNUIsSUFBTVMsTUFBTSxHQUFHLElBQUFDLHFCQUFZLEVBQUM7SUFDeEIzQixLQUFLLEVBQUVrQixRQUFRO0lBQ2ZyQixNQUFNLEVBQUVBLGVBQU0sQ0FBQytCLE9BQU8sQ0FBQy9CLGVBQU0sQ0FBQ0ssS0FBSyxDQUFDO01BQUVBLEtBQUssRUFBRTtJQUFZLENBQUMsQ0FBQyxFQUFFTCxlQUFNLENBQUNNLFNBQVMsQ0FBQztNQUFFTixNQUFNLEVBQUU7SUFBc0IsQ0FBQyxDQUFDLEVBQUVELFNBQVMsQ0FBQztJQUM1SGlDLFVBQVUsRUFBRSxDQUFDLElBQUlBLG1CQUFVLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0VBQ3pDLENBQUMsQ0FBQztFQUNGLE9BQU9KLE1BQU07QUFDakI7QUFBQyxJQUFBSyxRQUFBLEdBRWNOLFVBQVUsQ0FBQyxDQUFDO0FBQUFPLE9BQUEsY0FBQUQsUUFBQSJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specmatic",
|
|
3
|
-
"version": "0.72.
|
|
3
|
+
"version": "0.72.8",
|
|
4
4
|
"description": "Node wrapper for Specmatic",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"jest": "^29.6.1",
|
|
58
58
|
"jest-extended": "^4.0.0",
|
|
59
59
|
"jest-mock-extended": "^3.0.4",
|
|
60
|
+
"jest-when": "^3.5.2",
|
|
60
61
|
"rimraf": "^5.0.1",
|
|
61
62
|
"supertest": "^6.3.3",
|
|
62
63
|
"typescript": "^5.1.6"
|
|
@@ -1,64 +1,85 @@
|
|
|
1
|
-
import { initLogger } from '../logger'
|
|
1
|
+
import { initLogger } from '../logger'
|
|
2
|
+
import { when } from 'jest-when'
|
|
2
3
|
|
|
3
|
-
import fs from 'fs'
|
|
4
|
+
import fs from 'fs'
|
|
4
5
|
|
|
5
6
|
beforeEach(() => {
|
|
6
|
-
jest.resetAllMocks()
|
|
7
|
-
|
|
7
|
+
jest.resetAllMocks()
|
|
8
|
+
delete process.env.SPECMATIC_LOG_LEVEL
|
|
9
|
+
})
|
|
8
10
|
|
|
9
11
|
test('logging level is debug as configured in package.json', () => {
|
|
10
|
-
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}'
|
|
16
|
-
);
|
|
17
|
-
const logger = initLogger();
|
|
18
|
-
expect(packageJsonFileReadSpy).toHaveBeenCalledTimes(1);
|
|
19
|
-
expect(logger.level).toBe('debug');
|
|
20
|
-
});
|
|
12
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
13
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {"logLevel": "debug"}}')
|
|
14
|
+
const logger = initLogger()
|
|
15
|
+
expect(logger.level).toBe('debug')
|
|
16
|
+
})
|
|
21
17
|
|
|
22
18
|
test('logging level is info as configured in package.json', () => {
|
|
23
|
-
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}'
|
|
29
|
-
);
|
|
30
|
-
const logger = initLogger();
|
|
31
|
-
expect(packageJsonFileReadSpy).toHaveBeenCalledTimes(1);
|
|
32
|
-
expect(logger.level).toBe('info');
|
|
33
|
-
});
|
|
19
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
20
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {"logLevel": "info"}}')
|
|
21
|
+
const logger = initLogger()
|
|
22
|
+
expect(logger.level).toBe('info')
|
|
23
|
+
})
|
|
34
24
|
|
|
35
25
|
test('defaults logging level to warn when logLevel setting does not exist with specmatic configuration', () => {
|
|
36
|
-
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}'
|
|
41
|
-
);
|
|
42
|
-
const logger = initLogger();
|
|
43
|
-
expect(packageJsonFileReadSpy).toHaveBeenCalledTimes(1);
|
|
44
|
-
expect(logger.level).toBe('warn');
|
|
26
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
27
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {}}')
|
|
28
|
+
const logger = initLogger()
|
|
29
|
+
expect(logger.level).toBe('warn')
|
|
45
30
|
})
|
|
46
31
|
|
|
47
32
|
test('defaults logging level to warn when specmatic configuration does not exist', () => {
|
|
48
|
-
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
const logger = initLogger();
|
|
53
|
-
expect(packageJsonFileReadSpy).toHaveBeenCalledTimes(1);
|
|
54
|
-
expect(logger.level).toBe('warn');
|
|
33
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
34
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{}')
|
|
35
|
+
const logger = initLogger()
|
|
36
|
+
expect(logger.level).toBe('warn')
|
|
55
37
|
})
|
|
56
38
|
|
|
57
39
|
test('defaults logging level to warn when package.json does not exist', () => {
|
|
58
|
-
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
40
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
41
|
+
when(packageJsonFileReadSpy)
|
|
42
|
+
.calledWith('./package.json')
|
|
43
|
+
.mockImplementation(() => {
|
|
44
|
+
throw new Error()
|
|
45
|
+
})
|
|
46
|
+
const logger = initLogger()
|
|
47
|
+
expect(logger.level).toBe('warn')
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
test('log level is read from environment variable', () => {
|
|
51
|
+
process.env.SPECMATIC_LOG_LEVEL = 'debug'
|
|
52
|
+
const logger = initLogger()
|
|
53
|
+
expect(logger.level).toBe('debug')
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
test('log level set in environment variable takes precendece over specmatic.json', () => {
|
|
57
|
+
process.env.SPECMATIC_LOG_LEVEL = 'error'
|
|
58
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
59
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {"logLevel": "debug"}}')
|
|
60
|
+
const logger = initLogger()
|
|
61
|
+
expect(logger.level).toBe('error')
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
test('log level set in environment variable is used instead of default', () => {
|
|
65
|
+
process.env.SPECMATIC_LOG_LEVEL = 'error'
|
|
66
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
67
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{}')
|
|
68
|
+
const logger = initLogger()
|
|
69
|
+
expect(logger.level).toBe('error')
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
test('uses default log level "warn" when log level configured in specmatic.json is invalid', () => {
|
|
73
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
74
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {"logLevel": "silly"}}')
|
|
75
|
+
const logger = initLogger()
|
|
76
|
+
expect(logger.level).toBe('warn')
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
test('ignores log level configured in environment variable when invalid', () => {
|
|
80
|
+
process.env.SPECMATIC_LOG_LEVEL = 'silly'
|
|
81
|
+
const packageJsonFileReadSpy = jest.spyOn(fs, 'readFileSync')
|
|
82
|
+
when(packageJsonFileReadSpy).calledWith('./package.json').mockReturnValue('{"specmatic": {"logLevel": "debug"}}')
|
|
83
|
+
const logger = initLogger()
|
|
84
|
+
expect(logger.level).toBe('debug')
|
|
85
|
+
})
|
package/src/common/logger.ts
CHANGED
|
@@ -1,34 +1,49 @@
|
|
|
1
|
-
import { createLogger, format, transports } from 'winston'
|
|
2
|
-
import fs from 'fs'
|
|
1
|
+
import { config, createLogger, format, transports } from 'winston'
|
|
2
|
+
import fs from 'fs'
|
|
3
3
|
|
|
4
4
|
const logFormat = format.printf(({ level, message, label, timestamp }) => {
|
|
5
|
-
return `[${label}] ${timestamp} ${level}: ${message}
|
|
6
|
-
})
|
|
5
|
+
return `[${label}] ${timestamp} ${level}: ${message}`
|
|
6
|
+
})
|
|
7
7
|
|
|
8
8
|
function getSpecmaticConfig() {
|
|
9
|
-
const packageJsonPath = './package.json'
|
|
10
|
-
var specmaticConfig
|
|
9
|
+
const packageJsonPath = './package.json'
|
|
10
|
+
var specmaticConfig
|
|
11
11
|
if (fs.existsSync(packageJsonPath)) {
|
|
12
|
-
let packageJsonContent
|
|
12
|
+
let packageJsonContent
|
|
13
13
|
try {
|
|
14
|
-
packageJsonContent = fs.readFileSync(packageJsonPath)
|
|
14
|
+
packageJsonContent = fs.readFileSync(packageJsonPath)
|
|
15
15
|
} catch (error) {
|
|
16
|
-
packageJsonContent =
|
|
16
|
+
packageJsonContent = '{}'
|
|
17
17
|
}
|
|
18
|
-
const packageConfig = JSON.parse(packageJsonContent as unknown as string)
|
|
19
|
-
specmaticConfig = packageConfig.specmatic
|
|
18
|
+
const packageConfig = JSON.parse(packageJsonContent as unknown as string)
|
|
19
|
+
specmaticConfig = packageConfig.specmatic
|
|
20
20
|
}
|
|
21
|
-
return specmaticConfig || {}
|
|
21
|
+
return specmaticConfig || {}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function getLogLevel() {
|
|
25
|
+
let logLevel
|
|
26
|
+
if (process.env.SPECMATIC_LOG_LEVEL) {
|
|
27
|
+
logLevel = process.env.SPECMATIC_LOG_LEVEL
|
|
28
|
+
}
|
|
29
|
+
if (!logLevel || !config.syslog.levels[logLevel]) {
|
|
30
|
+
const specmaticConfig = getSpecmaticConfig()
|
|
31
|
+
logLevel = specmaticConfig.logLevel
|
|
32
|
+
}
|
|
33
|
+
if (!logLevel || !config.syslog.levels[logLevel]) {
|
|
34
|
+
logLevel = 'warn'
|
|
35
|
+
}
|
|
36
|
+
return logLevel
|
|
22
37
|
}
|
|
23
38
|
|
|
24
39
|
export function initLogger() {
|
|
25
|
-
|
|
40
|
+
let logLevel = getLogLevel()
|
|
26
41
|
const logger = createLogger({
|
|
27
|
-
level:
|
|
42
|
+
level: logLevel,
|
|
28
43
|
format: format.combine(format.label({ label: 'specmatic' }), format.timestamp({ format: 'DD-MM-YYYY HH:mm:ss' }), logFormat),
|
|
29
44
|
transports: [new transports.Console()],
|
|
30
|
-
})
|
|
31
|
-
return logger
|
|
45
|
+
})
|
|
46
|
+
return logger
|
|
32
47
|
}
|
|
33
48
|
|
|
34
|
-
export default initLogger()
|
|
49
|
+
export default initLogger()
|