create logger package
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
"@fastify/websocket": "^8.3.1",
|
"@fastify/websocket": "^8.3.1",
|
||||||
"@openpanel/common": "workspace:*",
|
"@openpanel/common": "workspace:*",
|
||||||
"@openpanel/db": "workspace:*",
|
"@openpanel/db": "workspace:*",
|
||||||
|
"@openpanel/logger": "workspace:*",
|
||||||
"@openpanel/queue": "workspace:*",
|
"@openpanel/queue": "workspace:*",
|
||||||
"@openpanel/redis": "workspace:*",
|
"@openpanel/redis": "workspace:*",
|
||||||
"@openpanel/trpc": "workspace:*",
|
"@openpanel/trpc": "workspace:*",
|
||||||
|
|||||||
@@ -1,25 +1,6 @@
|
|||||||
import type { TransportTargetOptions } from 'pino';
|
import { createLogger } from '@openpanel/logger';
|
||||||
import pino from 'pino';
|
|
||||||
|
|
||||||
const targets: TransportTargetOptions[] =
|
export const logger = createLogger({ target: 'api' });
|
||||||
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 function logInfo(msg: string, obj?: unknown) {
|
export function logInfo(msg: string, obj?: unknown) {
|
||||||
logger.info(obj, msg);
|
logger.info(obj, msg);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"@bull-board/api": "^5.13.0",
|
"@bull-board/api": "^5.13.0",
|
||||||
"@bull-board/express": "^5.13.0",
|
"@bull-board/express": "^5.13.0",
|
||||||
"@openpanel/common": "workspace:*",
|
"@openpanel/common": "workspace:*",
|
||||||
|
"@openpanel/logger": "workspace:*",
|
||||||
"@openpanel/db": "workspace:*",
|
"@openpanel/db": "workspace:*",
|
||||||
"@openpanel/queue": "workspace:*",
|
"@openpanel/queue": "workspace:*",
|
||||||
"@openpanel/redis": "workspace:*",
|
"@openpanel/redis": "workspace:*",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { logger } from '@/utils/logger';
|
||||||
import { getReferrerWithQuery, parseReferrer } from '@/utils/parse-referrer';
|
import { getReferrerWithQuery, parseReferrer } from '@/utils/parse-referrer';
|
||||||
import { isUserAgentSet, parseUserAgent } from '@/utils/parse-user-agent';
|
import { isUserAgentSet, parseUserAgent } from '@/utils/parse-user-agent';
|
||||||
import { isSameDomain, parsePath } from '@/utils/url';
|
import { isSameDomain, parsePath } from '@/utils/url';
|
||||||
@@ -192,15 +193,31 @@ export async function incomingEvent(job: Job<EventsQueuePayloadIncomingEvent>) {
|
|||||||
duration,
|
duration,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
job.log(`Failed to update duration: ${e.message}`);
|
logger.error(
|
||||||
|
{
|
||||||
|
error,
|
||||||
|
prevEventJobStatus: await prevEventJob
|
||||||
|
.getState()
|
||||||
|
.catch(() => 'unknown'),
|
||||||
|
},
|
||||||
|
`Failed update delayed job`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await prevEventJob.promote();
|
await prevEventJob.promote();
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
job.log(`Failed to promote job: ${e.message}`);
|
logger.error(
|
||||||
|
{
|
||||||
|
error,
|
||||||
|
prevEventJobStatus: await prevEventJob
|
||||||
|
.getState()
|
||||||
|
.catch(() => 'unknown'),
|
||||||
|
},
|
||||||
|
`Failed to promote job`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (payload.name !== 'screen_view') {
|
} else if (payload.name !== 'screen_view') {
|
||||||
|
|||||||
3
apps/worker/src/utils/logger.ts
Normal file
3
apps/worker/src/utils/logger.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import { createLogger } from '@openpanel/logger';
|
||||||
|
|
||||||
|
export const logger = createLogger({ target: 'worker' });
|
||||||
24
packages/logger/index.ts
Normal file
24
packages/logger/index.ts
Normal 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);
|
||||||
|
}
|
||||||
32
packages/logger/package.json
Normal file
32
packages/logger/package.json
Normal 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"
|
||||||
|
}
|
||||||
12
packages/logger/tsconfig.json
Normal file
12
packages/logger/tsconfig.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"extends": "@openpanel/tsconfig/base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["./src/*"]
|
||||||
|
},
|
||||||
|
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
|
||||||
|
},
|
||||||
|
"include": ["."],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user