fix(root): add hyperdx and better logging
This commit is contained in:
committed by
Carl-Gerhard Lindesvärd
parent
4bafa16419
commit
c819c18962
@@ -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),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user