fix(root): add hyperdx and better logging

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-09-13 21:49:51 +02:00
committed by Carl-Gerhard Lindesvärd
parent 4bafa16419
commit c819c18962
22 changed files with 2116 additions and 332 deletions

View File

@@ -1,19 +1,45 @@
import type { TransportTargetOptions } from 'pino';
import pino from 'pino';
import * as HyperDX from '@hyperdx/node-opentelemetry';
import winston from 'winston';
export function createLogger({ dataset }: { dataset: string }) {
const targets: TransportTargetOptions[] =
process.env.NODE_ENV === 'production' && process.env.BASELIME_API_KEY
? []
: [
{
target: 'pino-pretty',
},
];
export { winston };
const transport = pino.transport({
targets,
export type ILogger = winston.Logger & {
noop: (message: string) => (error: unknown) => void;
};
const logLevel = process.env.LOG_LEVEL ?? 'info';
export function createLogger({ name }: { name: string }): ILogger {
const service = `${name}-${process.env.NODE_ENV ?? 'dev'}`;
const format = process.env.HYPERDX_API_KEY
? winston.format.json()
: winston.format.prettyPrint();
const transports: winston.transport[] = [new winston.transports.Console()];
if (process.env.HYPERDX_API_KEY) {
transports.push(
HyperDX.getWinstonTransport(logLevel, {
detectResources: true,
service,
})
);
}
const logger = winston.createLogger({
defaultMeta: { service },
level: logLevel,
format,
transports,
// Add ISO levels of logging from PINO
levels: Object.assign(
{ fatal: 0, warn: 4, trace: 7 },
winston.config.syslog.levels
),
});
return pino(transport);
return Object.assign(logger, {
noop: (message: string) => (error: unknown) =>
logger.error(`noop: ${message}`, error),
});
}

View File

@@ -8,8 +8,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"pino": "^8.17.2",
"pino-pretty": "^10.3.1"
"@hyperdx/node-opentelemetry": "^0.8.1",
"winston": "^3.14.2"
},
"devDependencies": {
"@openpanel/eslint-config": "workspace:*",
@@ -28,4 +28,4 @@
]
},
"prettier": "@openpanel/prettier-config"
}
}