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

✨ Use pino formatters for pkgVersion and severity #43

Merged
merged 3 commits into from
Jun 16, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { ErrorRequestHandler } from 'express';
import * as fs from 'fs';
import isObject = require('lodash.isobject');
import isString = require('lodash.isstring');
import * as path from 'path';
import * as pino from 'pino';
import * as pinoms from 'pino-multi-stream';
import { Writable } from 'stream';
Expand Down Expand Up @@ -76,10 +78,25 @@ const maxLevelWrite: pino.WriteFn = function(this: any, data: object): void {
};

const initFormatters = (options: CosmasOptions & { loggerName?: string }) => {
const pkgJson = JSON.parse(fs.readFileSync(path.resolve(path.join(__dirname, '..', 'package.json')), 'utf8'));

const formatters: pino.LoggerOptions['formatters'] = {};
if (options.pretty || options.disableStackdriverFormat) return formatters;
formatters.level = (_label: string, level: number) => {
return { level, severity: PINO_TO_STACKDRIVER[level] || 'UNKNOWN' };
if (!options.pretty && !options.disableStackdriverFormat) {
formatters.level = (_label: string, level: number) => {
return { level, severity: PINO_TO_STACKDRIVER[level] || 'UNKNOWN' };
};
}

// do not put logger name field to pretty outputs
formatters.log = (object: { [key: string]: any }) => {
smolijar marked this conversation as resolved.
Show resolved Hide resolved
if (options.loggerName && !options.pretty) {
object[loggerNameKey] = options.loggerName;
}
// put pkgVersion to non-pretty outputs
if (!options.pretty) {
object[pkgVersionKey] = pkgJson.version;
}
return object;
};
return formatters;
};
Expand Down
12 changes: 0 additions & 12 deletions src/streams.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,19 @@
import * as fs from 'fs';
import * as path from 'path';
import * as pino from 'pino';
import { Transform, TransformCallback } from 'stream';
import * as util from 'util';
import { loggerNameKey, pkgVersionKey } from './index';
import { CosmasOptions, CosmasStream } from './interfaces';
import { levels } from './levels';

const pkgJson = JSON.parse(fs.readFileSync(path.resolve(path.join(__dirname, '..', 'package.json')), 'utf8'));

const getDefaultTransformStream = (options: CosmasOptions & { messageKey: string; loggerName?: string }) => {
class DefaultTransformStream extends Transform {
// tslint:disable-next-line:function-name
public _transform(chunk: any, _encoding: string, callback: TransformCallback) {
const obj = JSON.parse(chunk);
const loggerName = options.loggerName;
let res;
if (loggerName && !options.pretty) {
// do not put logger name field to pretty outputs
obj[loggerNameKey] = loggerName;
}

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

Expand Down
1 change: 1 addition & 0 deletions src/tests/sentry-mocked.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ Object {
"data": "fatal",
"scope": Object {
"extras": Object {
"cosmas.pkgVersion": "2.0.0-rc.2",
smolijar marked this conversation as resolved.
Show resolved Hide resolved
"level": 60,
"message": "fatal",
"severity": "CRITICAL",
Expand Down