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

Commit

Permalink
✨ Use pino formatters for pkgVersion and severity
Browse files Browse the repository at this point in the history
  • Loading branch information
Michal Vlasák committed Jun 9, 2020
1 parent 1f622f5 commit ee76e59
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 15 deletions.
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 }) => {
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",
"level": 60,
"message": "fatal",
"severity": "CRITICAL",
Expand Down

0 comments on commit ee76e59

Please sign in to comment.