create logger package

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-05-04 14:24:00 +02:00
parent ba6ca9b13c
commit 8098f9af33
8 changed files with 96 additions and 25 deletions

View File

@@ -18,6 +18,7 @@
"@fastify/websocket": "^8.3.1",
"@openpanel/common": "workspace:*",
"@openpanel/db": "workspace:*",
"@openpanel/logger": "workspace:*",
"@openpanel/queue": "workspace:*",
"@openpanel/redis": "workspace:*",
"@openpanel/trpc": "workspace:*",

View File

@@ -1,25 +1,6 @@
import type { TransportTargetOptions } from 'pino';
import pino from 'pino';
import { createLogger } from '@openpanel/logger';
const targets: TransportTargetOptions[] =
process.env.NODE_ENV === 'production'
? [
{
target: '@baselime/pino-transport',
options: { baselimeApiKey: process.env.BASELIME_API_KEY },
},
]
: [
{
target: 'pino-pretty',
},
];
const transport = pino.transport({
targets,
});
export const logger = pino(transport);
export const logger = createLogger({ target: 'api' });
export function logInfo(msg: string, obj?: unknown) {
logger.info(obj, msg);

View File

@@ -14,6 +14,7 @@
"@bull-board/api": "^5.13.0",
"@bull-board/express": "^5.13.0",
"@openpanel/common": "workspace:*",
"@openpanel/logger": "workspace:*",
"@openpanel/db": "workspace:*",
"@openpanel/queue": "workspace:*",
"@openpanel/redis": "workspace:*",

View File

@@ -1,3 +1,4 @@
import { logger } from '@/utils/logger';
import { getReferrerWithQuery, parseReferrer } from '@/utils/parse-referrer';
import { isUserAgentSet, parseUserAgent } from '@/utils/parse-user-agent';
import { isSameDomain, parsePath } from '@/utils/url';
@@ -192,15 +193,31 @@ export async function incomingEvent(job: Job<EventsQueuePayloadIncomingEvent>) {
duration,
},
});
} catch (e) {
job.log(`Failed to update duration: ${e.message}`);
} catch (error) {
logger.error(
{
error,
prevEventJobStatus: await prevEventJob
.getState()
.catch(() => 'unknown'),
},
`Failed update delayed job`
);
}
}
try {
await prevEventJob.promote();
} catch (e) {
job.log(`Failed to promote job: ${e.message}`);
} catch (error) {
logger.error(
{
error,
prevEventJobStatus: await prevEventJob
.getState()
.catch(() => 'unknown'),
},
`Failed to promote job`
);
}
}
} else if (payload.name !== 'screen_view') {

View File

@@ -0,0 +1,3 @@
import { createLogger } from '@openpanel/logger';
export const logger = createLogger({ target: 'worker' });

24
packages/logger/index.ts Normal file
View File

@@ -0,0 +1,24 @@
import type { TransportTargetOptions } from 'pino';
import pino from 'pino';
export function createLogger({ target }: { target: string }) {
const targets: TransportTargetOptions[] =
process.env.NODE_ENV === 'production'
? [
{
target: '@baselime/pino-transport',
options: { baselimeApiKey: process.env.BASELIME_API_KEY, target },
},
]
: [
{
target: 'pino-pretty',
},
];
const transport = pino.transport({
targets,
});
return pino(transport);
}

View File

@@ -0,0 +1,32 @@
{
"name": "@openpanel/logger",
"version": "0.0.1",
"main": "index.ts",
"scripts": {
"lint": "eslint .",
"format": "prettier --check \"**/*.{mjs,ts,md,json}\"",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@baselime/pino-transport": "^0.1.5",
"pino": "^8.17.2",
"pino-pretty": "^10.3.1"
},
"devDependencies": {
"@openpanel/eslint-config": "workspace:*",
"@openpanel/prettier-config": "workspace:*",
"@openpanel/tsconfig": "workspace:*",
"date-fns": "^3.3.1",
"eslint": "^8.48.0",
"prettier": "^3.0.3",
"prisma": "^5.1.1",
"typescript": "^5.2.2"
},
"eslintConfig": {
"root": true,
"extends": [
"@openpanel/eslint-config/base"
]
},
"prettier": "@openpanel/prettier-config"
}

View File

@@ -0,0 +1,12 @@
{
"extends": "@openpanel/tsconfig/base.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},
"include": ["."],
"exclude": ["node_modules"]
}