bot: fix production run (logger problem)

This commit is contained in:
vchikalkin 2025-08-26 23:03:30 +03:00
parent e182db1740
commit 73b943fefc
6 changed files with 25 additions and 23 deletions

View File

@ -1,4 +1,3 @@
import { type logger } from '@/utils/logger';
import { type AutoChatActionFlavor } from '@grammyjs/auto-chat-action';
import { type CommandsFlavor } from '@grammyjs/commands';
import { type ConversationFlavor } from '@grammyjs/conversations';
@ -8,13 +7,7 @@ import { type Context as DefaultContext, type SessionFlavor } from 'grammy';
export type Context = ConversationFlavor<
HydrateFlavor<
AutoChatActionFlavor &
CommandsFlavor &
DefaultContext &
I18nFlavor &
SessionFlavor<SessionData> & {
logger: typeof logger;
}
AutoChatActionFlavor & CommandsFlavor & DefaultContext & I18nFlavor & SessionFlavor<SessionData>
>
>;

View File

@ -1,6 +1,7 @@
import { type Context } from '../context';
import { getUpdateInfo } from '../helpers/logging';
import { KEYBOARD_REMOVE } from '@/config/keyboards';
import { logger } from '@/utils/logger';
import { ERRORS } from '@repo/graphql/constants/errors';
import { type ErrorHandler } from 'grammy';
@ -11,7 +12,7 @@ export const errorHandler: ErrorHandler<Context> = async (error) => {
await ctx.reply(ctx.t(text), { ...KEYBOARD_REMOVE, parse_mode: 'HTML' });
ctx.logger.error({
logger.error({
err: error.error,
update: getUpdateInfo(ctx),
});

View File

@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { type Context } from '../context';
import { logger } from '@/utils/logger';
import { type Update } from '@grammyjs/types';
import { type Middleware } from 'grammy';
@ -11,7 +12,7 @@ export function getUpdateInfo(context: Context): Omit<Update, 'update_id'> {
export function logHandle(id: string): Middleware<Context> {
return (context, next) => {
context.logger.info({
logger.info({
msg: `Handle "${id}"`,
...(id.startsWith('unhandled') ? { update: getUpdateInfo(context) } : {}),
});

View File

@ -1,12 +1,13 @@
import { type Context } from '@/bot/context';
import { getUpdateInfo } from '@/bot/helpers/logging';
import { logger } from '@/utils/logger';
import { type Middleware } from 'grammy';
import { performance } from 'node:perf_hooks';
export function updateLogger(): Middleware<Context> {
return async (ctx, next) => {
ctx.api.config.use((previous, method, payload, signal) => {
ctx.logger.debug({
logger.debug({
method,
msg: 'Bot API call',
payload,
@ -15,7 +16,7 @@ export function updateLogger(): Middleware<Context> {
return previous(method, payload, signal);
});
ctx.logger.debug({
logger.debug({
msg: 'Update received',
update: getUpdateInfo(ctx),
});
@ -25,7 +26,7 @@ export function updateLogger(): Middleware<Context> {
return next();
} finally {
const endTime = performance.now();
ctx.logger.debug({
logger.debug({
elapsed: endTime - startTime,
msg: 'Update processed',
});

View File

@ -1,7 +1,7 @@
/* eslint-disable turbo/no-undeclared-env-vars */
import pino from 'pino';
export const logger = pino({
const logger = pino({
transport: {
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
options: {
@ -11,3 +11,9 @@ export const logger = pino({
target: 'pino-pretty',
},
});
logger.info = logger.info.bind(logger);
logger.debug = logger.debug.bind(logger);
logger.error = logger.error.bind(logger);
export { logger };

18
pnpm-lock.yaml generated
View File

@ -23,7 +23,7 @@ catalogs:
version: 2.2.2
autoprefixer:
specifier: ^10.4.20
version: 10.4.21
version: 10.4.20
dayjs:
specifier: ^1.11.3
version: 1.11.13
@ -35,7 +35,7 @@ catalogs:
version: 9.21.0
graphql:
specifier: ^16.9.0
version: 16.11.0
version: 16.9.0
husky:
specifier: ^9.1.7
version: 9.1.7
@ -44,13 +44,13 @@ catalogs:
version: 9.0.2
lint-staged:
specifier: ^15.2.10
version: 15.5.2
version: 15.2.10
lucide-react:
specifier: ^0.462.0
version: 0.462.0
postcss:
specifier: ^8.4.49
version: 8.5.6
version: 8.4.49
postcss-load-config:
specifier: ^6.0.1
version: 6.0.1
@ -59,7 +59,7 @@ catalogs:
version: 3.6.2
radashi:
specifier: ^12.5.1
version: 12.6.0
version: 12.5.1
react:
specifier: ^19.1.1
version: 19.1.1
@ -68,19 +68,19 @@ catalogs:
version: 19.1.1
tailwindcss:
specifier: ^3.4.15
version: 3.4.17
version: 3.4.15
typescript:
specifier: ^5.7
version: 5.8.3
version: 5.7.2
vite-tsconfig-paths:
specifier: ^5.1.4
version: 5.1.4
vitest:
specifier: ^2.1.8
version: 2.1.9
version: 2.1.8
zod:
specifier: ^3.24.1
version: 3.25.71
version: 3.24.1
importers: