Skip to content

Commit bfaef28

Browse files
authored
Merge pull request #37 from danBamikiya/db 🔀
Feat: add custom log levels 🔊
2 parents 5c613a0 + f7464e1 commit bfaef28

File tree

3 files changed

+56
-6
lines changed

3 files changed

+56
-6
lines changed

server/src/config/logger.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
import winston from 'winston'
22
import Sentry from 'winston-transport-sentry-node'
33
import { SENTRY_DSN } from './common'
4-
import logLevel from '../utils/logLevel'
4+
import { logLevel, logLevels } from '../utils/logLevel'
5+
6+
winston.addColors(logLevels.colors)
57

68
const logger = winston.createLogger({
9+
levels: logLevels.levels,
710
level: logLevel(),
811
format: winston.format.combine(
12+
winston.format.colorize({ all: true }),
913
winston.format.json(),
10-
winston.format.colorize()
14+
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
15+
winston.format.printf(info => {
16+
return (
17+
Object.keys(info)
18+
.reverse()
19+
.reduce((acc, key, i) => {
20+
if (typeof key === 'string') {
21+
if (i > 0) acc += ', '
22+
acc += `"${key}": "${info[key]}"`
23+
}
24+
25+
return acc
26+
}, '{ ') + ' }'
27+
)
28+
})
1129
),
1230
transports: [
1331
new winston.transports.Console({ handleExceptions: true }),

server/src/middlewares/logging.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ import winston from 'winston'
33
import expressWinston from 'express-winston'
44
import Sentry from 'winston-transport-sentry-node'
55
import { SENTRY_DSN } from '../config/common'
6-
import logLevel from '../utils/logLevel'
6+
import { logLevel } from '../utils/logLevel'
77

88
const handleLogging = (router: Router) =>
99
router.use(
1010
expressWinston.logger({
11+
msg: 'HTTP {{req.method}} {{req.url}}',
1112
format: winston.format.combine(
12-
winston.format.json(),
1313
winston.format.colorize({ all: true }),
14-
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }),
14+
winston.format.json(),
15+
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
1516
winston.format.printf(
1617
info => `${info.timestamp} ${info.level}: ${info.message}`
1718
)

server/src/utils/logLevel.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,37 @@
1+
/**
2+
* @desc
3+
* Only log levels less than or equal to this level.
4+
*/
15
const logLevel = () => {
26
const env = process.env.NODE_ENV || 'development'
37
return env === 'development' ? 'debug' : 'warn'
48
}
59

6-
export default logLevel
10+
/**
11+
* @desc
12+
* Levels (and colors) representing log priorities.
13+
*/
14+
const logLevels = {
15+
levels: {
16+
emerg: 0,
17+
alert: 1,
18+
crit: 2,
19+
error: 3,
20+
warn: 4,
21+
notice: 5,
22+
info: 6,
23+
debug: 7
24+
},
25+
colors: {
26+
emerg: 'bold red',
27+
alert: 'bold yellow',
28+
crit: 'bold red',
29+
error: 'bold red',
30+
warn: 'bold red',
31+
notice: 'yellow',
32+
info: 'green',
33+
debug: 'blue'
34+
}
35+
}
36+
37+
export { logLevel, logLevels }

0 commit comments

Comments
 (0)