@trojs/logger 0.6.1 → 1.0.0
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/package.json +28 -19
- package/src/helpers/stackdriver.js +14 -14
- package/src/logger.js +11 -11
- package/src/loggers/combined-file.js +2 -2
- package/src/loggers/console.js +13 -13
- package/src/loggers/error-file.js +2 -2
- package/src/loggers/index.js +14 -14
- package/src/loggers/sentry.js +7 -7
- package/src/models/enums/level.js +12 -8
- package/src/models/logger.js +8 -8
- package/src/models/mutators/logger.js +4 -4
- package/src/models/schemas/logger.js +3 -3
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trojs/logger",
|
|
3
3
|
"description": "Winston logger for TroJS",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pieter Wigboldus",
|
|
7
7
|
"url": "https://trojs.org/"
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"scripts": {
|
|
11
|
-
"lint": "eslint
|
|
12
|
-
"lint:report": "eslint src/*.js
|
|
13
|
-
"lint:fix": "eslint
|
|
11
|
+
"lint": "eslint",
|
|
12
|
+
"lint:report": "eslint src/*.js -f json -o report.json",
|
|
13
|
+
"lint:fix": "eslint --fix",
|
|
14
14
|
"test": "c8 node --test",
|
|
15
15
|
"cpd": "node_modules/jscpd/bin/jscpd src",
|
|
16
16
|
"vulnerabilities": "npm audit --omit=dev"
|
|
@@ -31,20 +31,20 @@
|
|
|
31
31
|
],
|
|
32
32
|
"main": "src/logger.js",
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
34
|
+
"@eslint/js": "^9.15.0",
|
|
35
|
+
"@stylistic/eslint-plugin": "^2.11.0",
|
|
36
|
+
"@stylistic/eslint-plugin-js": "^2.11.0",
|
|
37
|
+
"@trojs/error": "^4.0.0",
|
|
36
38
|
"c8": "^10.0.0",
|
|
37
|
-
"eslint": "^
|
|
38
|
-
"eslint-config-airbnb-base": "^15.0.0",
|
|
39
|
+
"eslint": "^9.15.0",
|
|
39
40
|
"eslint-config-prettier": "^9.1.0",
|
|
40
|
-
"eslint-plugin-
|
|
41
|
-
"eslint-plugin-
|
|
42
|
-
"eslint-plugin-
|
|
43
|
-
"eslint-plugin-jsx-a11y": "^6.9.0",
|
|
44
|
-
"eslint-plugin-n": "^17.9.0",
|
|
41
|
+
"eslint-plugin-import": "^2.31.0",
|
|
42
|
+
"eslint-plugin-jsdoc": "^50.5.0",
|
|
43
|
+
"eslint-plugin-n": "^17.14.0",
|
|
45
44
|
"eslint-plugin-prettier": "^5.2.1",
|
|
46
|
-
"eslint-plugin-promise": "^7.
|
|
47
|
-
"eslint-plugin-sonarjs": "^0.
|
|
45
|
+
"eslint-plugin-promise": "^7.1.0",
|
|
46
|
+
"eslint-plugin-sonarjs": "^2.0.4",
|
|
47
|
+
"globals": "^15.12.0",
|
|
48
48
|
"jscpd": "^4.0.0",
|
|
49
49
|
"prettier": "^3.3.3"
|
|
50
50
|
},
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"url": "https://github.com/trojs/logger"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
|
-
"node": ">=
|
|
56
|
+
"node": ">= 20"
|
|
57
57
|
},
|
|
58
58
|
"keywords": [
|
|
59
59
|
"javascript",
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
],
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@sentry/node": "^8.0.0",
|
|
66
|
-
"@trojs/enum": "^
|
|
67
|
-
"@trojs/mutator": "^0.
|
|
68
|
-
"@trojs/objects": "^
|
|
66
|
+
"@trojs/enum": "^4.0.0",
|
|
67
|
+
"@trojs/mutator": "^1.0.0",
|
|
68
|
+
"@trojs/objects": "^9.0.1",
|
|
69
69
|
"compression": "^1.7.4",
|
|
70
70
|
"cors": "^2.8.5",
|
|
71
71
|
"dotenv": "^16.0.3",
|
|
@@ -76,5 +76,14 @@
|
|
|
76
76
|
"funding": {
|
|
77
77
|
"type": "github",
|
|
78
78
|
"url": "https://github.com/sponsors/w3nl"
|
|
79
|
+
},
|
|
80
|
+
"overrides": {
|
|
81
|
+
"eslint-plugin-sonarjs": {
|
|
82
|
+
"eslint": "^9.15.0",
|
|
83
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
84
|
+
"@typescript-eslint/utils": "^8.0.0",
|
|
85
|
+
"eslint-plugin-import": "^2.31.0",
|
|
86
|
+
"eslint-plugin-react-hooks": "^5.0.0"
|
|
87
|
+
}
|
|
79
88
|
}
|
|
80
89
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import os from 'node:os'
|
|
1
|
+
import os from 'node:os'
|
|
2
2
|
|
|
3
3
|
const levelToSeverity = {
|
|
4
4
|
trace: 'DEBUG',
|
|
@@ -6,8 +6,8 @@ const levelToSeverity = {
|
|
|
6
6
|
info: 'INFO',
|
|
7
7
|
warn: 'WARNING',
|
|
8
8
|
error: 'ERROR',
|
|
9
|
-
fatal: 'CRITICAL'
|
|
10
|
-
}
|
|
9
|
+
fatal: 'CRITICAL'
|
|
10
|
+
}
|
|
11
11
|
|
|
12
12
|
const levels = {
|
|
13
13
|
trace: 10,
|
|
@@ -15,18 +15,18 @@ const levels = {
|
|
|
15
15
|
info: 30,
|
|
16
16
|
warn: 40,
|
|
17
17
|
error: 50,
|
|
18
|
-
fatal: 60
|
|
19
|
-
}
|
|
18
|
+
fatal: 60
|
|
19
|
+
}
|
|
20
20
|
|
|
21
21
|
const stackdriver =
|
|
22
22
|
({ level, defaultLevel }) =>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
(info) => ({
|
|
24
|
+
...info,
|
|
25
|
+
severity: levelToSeverity[level] || levelToSeverity[defaultLevel],
|
|
26
|
+
level: levels[level] || levels[defaultLevel],
|
|
27
|
+
time: Date.now(),
|
|
28
|
+
pid: process.pid,
|
|
29
|
+
hostname: os.hostname()
|
|
30
|
+
})
|
|
31
31
|
|
|
32
|
-
export default stackdriver
|
|
32
|
+
export default stackdriver
|
package/src/logger.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import winston from 'winston'
|
|
2
|
-
import makeLoggers from './loggers/index.js'
|
|
1
|
+
import winston from 'winston'
|
|
2
|
+
import makeLoggers from './loggers/index.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @typedef {import('./models/schemas/logger.js').Logger} LoggerType
|
|
@@ -9,9 +9,9 @@ import makeLoggers from './loggers/index.js';
|
|
|
9
9
|
/** @type {LoggerType[]} */
|
|
10
10
|
const defaultLoggers = [
|
|
11
11
|
{
|
|
12
|
-
type: 'console'
|
|
13
|
-
}
|
|
14
|
-
]
|
|
12
|
+
type: 'console'
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
15
|
|
|
16
16
|
const levels = {
|
|
17
17
|
fatal: 0,
|
|
@@ -19,8 +19,8 @@ const levels = {
|
|
|
19
19
|
warn: 2,
|
|
20
20
|
info: 3,
|
|
21
21
|
debug: 4,
|
|
22
|
-
trace: 5
|
|
23
|
-
}
|
|
22
|
+
trace: 5
|
|
23
|
+
}
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Create the logger
|
|
@@ -31,12 +31,12 @@ const levels = {
|
|
|
31
31
|
* @returns {winston.Logger}
|
|
32
32
|
*/
|
|
33
33
|
export default ({ loggers = defaultLoggers, level = 'info', meta = {} }) => {
|
|
34
|
-
const winstonLoggers = makeLoggers({ winston, loggers })
|
|
34
|
+
const winstonLoggers = makeLoggers({ winston, loggers })
|
|
35
35
|
|
|
36
36
|
return winston.createLogger({
|
|
37
37
|
level,
|
|
38
38
|
levels,
|
|
39
39
|
defaultMeta: meta,
|
|
40
|
-
transports: winstonLoggers
|
|
41
|
-
})
|
|
42
|
-
}
|
|
40
|
+
transports: winstonLoggers
|
|
41
|
+
})
|
|
42
|
+
}
|
package/src/loggers/console.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import stackDriver from '../helpers/stackdriver.js'
|
|
1
|
+
import stackDriver from '../helpers/stackdriver.js'
|
|
2
2
|
|
|
3
3
|
export default ({ winston, logger }) => {
|
|
4
|
-
const defaultLevel = 'trace'
|
|
4
|
+
const defaultLevel = 'trace'
|
|
5
5
|
|
|
6
6
|
return new winston.transports.Console({
|
|
7
7
|
level: logger?.level || defaultLevel,
|
|
8
8
|
format:
|
|
9
9
|
logger.format === 'json'
|
|
10
10
|
? winston.format.combine(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
winston.format.errors({ stack: logger?.debug ?? false }),
|
|
12
|
+
winston.format(
|
|
13
|
+
stackDriver({ level: logger?.level, defaultLevel })
|
|
14
|
+
)(),
|
|
15
|
+
winston.format.json()
|
|
16
|
+
)
|
|
17
17
|
: winston.format.combine(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
})
|
|
22
|
-
}
|
|
18
|
+
winston.format.errors({ stack: logger?.debug ?? false }),
|
|
19
|
+
winston.format.simple()
|
|
20
|
+
)
|
|
21
|
+
})
|
|
22
|
+
}
|
package/src/loggers/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import makeErrorFileLogger from './error-file.js'
|
|
2
|
-
import makeCombinedFileLogger from './combined-file.js'
|
|
3
|
-
import makeSentryLogger from './sentry.js'
|
|
4
|
-
import makeConsoleLogger from './console.js'
|
|
1
|
+
import makeErrorFileLogger from './error-file.js'
|
|
2
|
+
import makeCombinedFileLogger from './combined-file.js'
|
|
3
|
+
import makeSentryLogger from './sentry.js'
|
|
4
|
+
import makeConsoleLogger from './console.js'
|
|
5
5
|
|
|
6
|
-
import Logger from '../models/logger.js'
|
|
6
|
+
import Logger from '../models/logger.js'
|
|
7
7
|
|
|
8
8
|
const winstonLoggers = {
|
|
9
9
|
sentry: makeSentryLogger,
|
|
10
10
|
errorFile: makeErrorFileLogger,
|
|
11
11
|
combinedFile: makeCombinedFileLogger,
|
|
12
|
-
console: makeConsoleLogger
|
|
13
|
-
}
|
|
12
|
+
console: makeConsoleLogger
|
|
13
|
+
}
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @typedef {import('../models/schemas/logger.js').Logger} LoggerType
|
|
@@ -26,17 +26,17 @@ const winstonLoggers = {
|
|
|
26
26
|
*/
|
|
27
27
|
const makeLoggers = ({ winston, loggers }) =>
|
|
28
28
|
Logger.createAll(loggers).map((logger) => {
|
|
29
|
-
const loggerFn = winstonLoggers[logger.type]
|
|
29
|
+
const loggerFn = winstonLoggers[logger.type]
|
|
30
30
|
if (!loggerFn) {
|
|
31
|
-
throw new Error(`Unknown logger type: ${logger.type}`)
|
|
31
|
+
throw new Error(`Unknown logger type: ${logger.type}`)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
const opts = {
|
|
35
35
|
logger,
|
|
36
|
-
winston
|
|
37
|
-
}
|
|
36
|
+
winston
|
|
37
|
+
}
|
|
38
38
|
|
|
39
|
-
return loggerFn(opts)
|
|
40
|
-
})
|
|
39
|
+
return loggerFn(opts)
|
|
40
|
+
})
|
|
41
41
|
|
|
42
|
-
export default makeLoggers
|
|
42
|
+
export default makeLoggers
|
package/src/loggers/sentry.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import SentryPackage from 'winston-transport-sentry-node'
|
|
1
|
+
import SentryPackage from 'winston-transport-sentry-node'
|
|
2
2
|
|
|
3
|
-
const Sentry = SentryPackage?.default || SentryPackage
|
|
3
|
+
const Sentry = SentryPackage?.default || SentryPackage
|
|
4
4
|
|
|
5
5
|
export default ({ logger }) => {
|
|
6
6
|
const options = {
|
|
@@ -11,10 +11,10 @@ export default ({ logger }) => {
|
|
|
11
11
|
release: logger?.release || 'unknown',
|
|
12
12
|
debug: logger?.debug || false,
|
|
13
13
|
sampleRate: logger?.sampleRate || 1,
|
|
14
|
-
tracesSampleRate: logger?.tracesSampleRate || 1
|
|
14
|
+
tracesSampleRate: logger?.tracesSampleRate || 1
|
|
15
15
|
},
|
|
16
|
-
level: logger?.level || 'info'
|
|
17
|
-
}
|
|
16
|
+
level: logger?.level || 'info'
|
|
17
|
+
}
|
|
18
18
|
|
|
19
|
-
return new Sentry(options)
|
|
20
|
-
}
|
|
19
|
+
return new Sentry(options)
|
|
20
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { Enum } from '@trojs/enum'
|
|
1
|
+
import { Enum } from '@trojs/enum'
|
|
2
|
+
|
|
3
|
+
/* eslint-disable sonarjs/public-static-readonly */
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* @typedef LevelType
|
|
@@ -16,16 +18,18 @@ import { Enum } from '@trojs/enum';
|
|
|
16
18
|
* @readonly
|
|
17
19
|
* @enum { LevelType }
|
|
18
20
|
*/
|
|
19
|
-
|
|
20
|
-
static info = 'info'
|
|
21
|
+
class Level extends Enum {
|
|
22
|
+
static info = 'info'
|
|
21
23
|
|
|
22
|
-
static fatal = 'fatal'
|
|
24
|
+
static fatal = 'fatal'
|
|
23
25
|
|
|
24
|
-
static error = 'error'
|
|
26
|
+
static error = 'error'
|
|
25
27
|
|
|
26
|
-
static warn = 'warn'
|
|
28
|
+
static warn = 'warn'
|
|
27
29
|
|
|
28
|
-
static debug = 'debug'
|
|
30
|
+
static debug = 'debug'
|
|
29
31
|
|
|
30
|
-
static trace = 'trace'
|
|
32
|
+
static trace = 'trace'
|
|
31
33
|
}
|
|
34
|
+
|
|
35
|
+
export default Level
|
package/src/models/logger.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Obj } from '@trojs/objects'
|
|
2
|
-
import loggerSchema from './schemas/logger.js'
|
|
3
|
-
import LoggerMutator from './mutators/logger.js'
|
|
1
|
+
import { Obj } from '@trojs/objects'
|
|
2
|
+
import loggerSchema from './schemas/logger.js'
|
|
3
|
+
import LoggerMutator from './mutators/logger.js'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @typedef {import('./schemas/logger.js').Logger} LoggerType
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
const LoggerObject = Obj({ schema: loggerSchema })
|
|
9
|
+
const LoggerObject = Obj({ schema: loggerSchema })
|
|
10
10
|
|
|
11
11
|
export default class Logger {
|
|
12
12
|
/**
|
|
@@ -15,8 +15,8 @@ export default class Logger {
|
|
|
15
15
|
* @returns {LoggerType}
|
|
16
16
|
*/
|
|
17
17
|
static create(data) {
|
|
18
|
-
const logger = LoggerMutator.create(data)
|
|
19
|
-
return LoggerObject.create(logger)
|
|
18
|
+
const logger = LoggerMutator.create(data)
|
|
19
|
+
return LoggerObject.create(logger)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -26,9 +26,9 @@ export default class Logger {
|
|
|
26
26
|
*/
|
|
27
27
|
static createAll(data) {
|
|
28
28
|
if (!data || data.length === 0) {
|
|
29
|
-
return []
|
|
29
|
+
return []
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
return data.map((loggerData) => Logger.create(loggerData))
|
|
32
|
+
return data.map((loggerData) => Logger.create(loggerData))
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import DefaultMutator from '@trojs/mutator'
|
|
2
|
-
import LevelEnum from '../enums/level.js'
|
|
1
|
+
import DefaultMutator from '@trojs/mutator'
|
|
2
|
+
import LevelEnum from '../enums/level.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Logger mutator
|
|
@@ -7,8 +7,8 @@ import LevelEnum from '../enums/level.js';
|
|
|
7
7
|
*/
|
|
8
8
|
class Logger extends DefaultMutator {
|
|
9
9
|
setLevelAttribute(level) {
|
|
10
|
-
return LevelEnum.fromKey(level)
|
|
10
|
+
return LevelEnum.fromKey(level)
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export default Logger
|
|
14
|
+
export default Logger
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Level from '../enums/level.js'
|
|
1
|
+
import Level from '../enums/level.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @typedef {import('../enums/level.js').LevelType} LevelType
|
|
@@ -33,5 +33,5 @@ export default {
|
|
|
33
33
|
'debug?': Boolean,
|
|
34
34
|
'sampleRate?': Number,
|
|
35
35
|
'tracesSampleRate?': Number,
|
|
36
|
-
'format?': String
|
|
37
|
-
}
|
|
36
|
+
'format?': String
|
|
37
|
+
}
|