Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit f6736bf

Browse files
author
Michal Vlasák
committed
✨ Use pino formatters for pkgVersion and severity
1 parent 4c0a42d commit f6736bf

3 files changed

Lines changed: 21 additions & 15 deletions

File tree

src/index.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { ErrorRequestHandler } from 'express';
2+
import * as fs from 'fs';
23
import isObject = require('lodash.isobject');
34
import isString = require('lodash.isstring');
5+
import * as path from 'path';
46
import * as pino from 'pino';
57
import * as pinoms from 'pino-multi-stream';
68
import { Writable } from 'stream';
@@ -76,10 +78,25 @@ const maxLevelWrite: pino.WriteFn = function(this: any, data: object): void {
7678
};
7779

7880
const initFormatters = (options: CosmasOptions & { loggerName?: string }) => {
81+
const pkgJson = JSON.parse(fs.readFileSync(path.resolve(path.join(__dirname, '..', 'package.json')), 'utf8'));
82+
7983
const formatters: pino.LoggerOptions['formatters'] = {};
80-
if (options.pretty || options.disableStackdriverFormat) return formatters;
81-
formatters.level = (_label: string, level: number) => {
82-
return { level, severity: PINO_TO_STACKDRIVER[level] || 'UNKNOWN' };
84+
if (!options.pretty && !options.disableStackdriverFormat) {
85+
formatters.level = (_label: string, level: number) => {
86+
return { level, severity: PINO_TO_STACKDRIVER[level] || 'UNKNOWN' };
87+
};
88+
}
89+
90+
// do not put logger name field to pretty outputs
91+
formatters.log = (object: { [key: string]: any }) => {
92+
if (options.loggerName && !options.pretty) {
93+
object[loggerNameKey] = options.loggerName;
94+
}
95+
// put pkgVersion to non-pretty outputs
96+
if (!options.pretty) {
97+
object[pkgVersionKey] = pkgJson.version;
98+
}
99+
return object;
83100
};
84101
return formatters;
85102
};

src/streams.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,19 @@
1-
import * as fs from 'fs';
2-
import * as path from 'path';
31
import * as pino from 'pino';
42
import { Transform, TransformCallback } from 'stream';
53
import * as util from 'util';
6-
import { loggerNameKey, pkgVersionKey } from './index';
74
import { CosmasOptions, CosmasStream } from './interfaces';
85
import { levels } from './levels';
96

10-
const pkgJson = JSON.parse(fs.readFileSync(path.resolve(path.join(__dirname, '..', 'package.json')), 'utf8'));
11-
127
const getDefaultTransformStream = (options: CosmasOptions & { messageKey: string; loggerName?: string }) => {
138
class DefaultTransformStream extends Transform {
149
// tslint:disable-next-line:function-name
1510
public _transform(chunk: any, _encoding: string, callback: TransformCallback) {
1611
const obj = JSON.parse(chunk);
17-
const loggerName = options.loggerName;
1812
let res;
19-
if (loggerName && !options.pretty) {
20-
// do not put logger name field to pretty outputs
21-
obj[loggerNameKey] = loggerName;
22-
}
2313

2414
if (options.pretty) {
2515
res = util.inspect(obj, { colors: true, showHidden: true, depth: Infinity });
2616
} else {
27-
// do not put pkgVersion to pretty outputs
28-
obj[pkgVersionKey] = pkgJson.version;
2917
res = JSON.stringify(obj);
3018
}
3119

src/tests/sentry-mocked.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ Object {
9191
"data": "fatal",
9292
"scope": Object {
9393
"extras": Object {
94+
"cosmas.pkgVersion": "2.0.0-rc.2",
9495
"level": 60,
9596
"message": "fatal",
9697
"severity": "CRITICAL",

0 commit comments

Comments
 (0)