Skip to content
Elogs
Esc
navigateopen⌘Jpreview
On this page

Interface: Logger

@eastgold15/elogs


@eastgold15/elogs / Logger

Interface: Logger

Defined in: packages/elogs/src/interfaces.ts:348

Logger 实例,可通过 store.logger 访问。

提供 9 个核心方法用于日志记录、上下文管理和错误处理。 所有日志方法都接收 Request 对象,用于自动关联请求 ID 和链路追踪信息。

Example

// 在 Elysia 插件或路由中获取 Logger
app.get('/user', ({ request, store }) => {
  const logger = store.logger;
  logger.info(request, 'Fetching user data', { userId: '123' });
});

Properties

debug

debug: (request, message, context?) => void

Defined in: packages/elogs/src/interfaces.ts:361

记录 DEBUG 级别的调试日志。

Parameters

request

Request

当前请求对象(必填),用于关联请求上下文

message

string

日志消息(必填),简要描述事件

context?

Record<string, unknown>

可选,额外的结构化上下文数据,会被合并到日志记录中

Returns

void

Example

logger.debug(request, 'Cache lookup', { cacheKey: 'user:123', hit: true });

error

error: (request, message, context?) => void

Defined in: packages/elogs/src/interfaces.ts:388

记录 ERROR 级别的错误日志。 通常用于记录需要立即关注的异常或失败情况。

Parameters

request

Request

当前请求对象(必填),用于关联请求上下文

message

string

错误消息(必填),描述发生了什么错误

context?

Record<string, unknown>

可选,额外的错误上下文,如错误码、堆栈信息等

Returns

void

Example

try {
  await riskyOperation();
} catch (err) {
  logger.error(request, 'Database query failed', {
    query: 'SELECT * FROM users',
    error: err.message,
    stack: err.stack
  });
}

getContext

getContext: (request) => Readonly<Record<string, unknown>>

Defined in: packages/elogs/src/interfaces.ts:410

获取当前请求累积的 per-request 上下文数据。

上下文数据通过 mergeContext 方法累积,会在 access log 中输出。 返回的对象是只读的,不应直接修改。

Parameters

request

Request

当前请求对象(必填)

Returns

Readonly<Record<string, unknown>>

当前请求累积的上下文对象的只读快照

Example

const ctx = logger.getContext(request);
console.log('Current request context:', ctx);
// 输出: { userId: '123', apiVersion: 'v2', processingTime: 45 }

handleHttpError

handleHttpError: (request, error, store, options?) => void

Defined in: packages/elogs/src/interfaces.ts:435

处理 HTTP 错误并记录详细的错误日志。

这是一个高级便捷方法,会自动从 error 中提取状态码、错误消息等信息, 并格式化输出到日志中,适合在全局错误处理中间件中使用。

Parameters

request

Request

当前请求对象(必填)

error

unknown

捕获的错误对象(必填),可以是 Error 实例、HTTPError 或任意值

store

StoreData

存储数据(必填),包含日志器等上下文信息

options?

CreateElogsOptions

可选的配置选项,可覆盖默认行为

Returns

void

Example

// 在 Elysia 全局错误处理器中使用
app.onError(({ request, error, store }) => {
  store.logger.handleHttpError(request, error, store, {
    logLevel: 'error',
    includeStack: true
  });
  return { error: 'Internal Server Error' };
});

info

info: (request, message, context?) => void

Defined in: packages/elogs/src/interfaces.ts:459

记录 INFO 级别的信息日志。

通常用于记录重要的业务事件或系统状态变化。

Parameters

request

Request

当前请求对象(必填),用于关联请求上下文

message

string

信息消息(必填),描述事件

context?

Record<string, unknown>

可选,额外的上下文数据

Returns

void

Example

logger.info(request, 'User logged in successfully', {
  userId: '123',
  loginMethod: 'oauth'
});

log

log: (level, request, data, store) => void

Defined in: packages/elogs/src/interfaces.ts:481

记录指定级别的日志(通用方法)。

适用于需要动态指定日志级别的场景,比使用 debuginfo 等快捷方法更灵活。

Parameters

level

LogLevel

日志级别(必填),必须是 ‘debug’ | ‘info’ | ‘warn’ | ‘error’ 之一

request

Request

当前请求对象(必填)

data

Record<string, unknown>

要记录的日志数据对象(必填)

store

StoreData

存储数据(必填),包含日志器等上下文信息

Returns

void

Example

const level = isProduction ? 'error' : 'debug';
logger.log(level, request, { event: 'UserAction', action: 'click' }, store);

mergeContext

mergeContext: (request, partial) => void

Defined in: packages/elogs/src/interfaces.ts:511

合并额外的数据到当前请求的上下文中。

这些数据会在后续的 access log 中自动包含,非常适合在请求处理过程中 逐步累积上下文信息(如经过认证后注入用户 ID)。

Parameters

request

Request

当前请求对象(必填)

partial

Record<string, unknown>

要合并的部分上下文对象(必填),会与现有上下文进行浅合并

Returns

void

Example

// 在认证中间件中记录用户信息
app.use(({ request, store }) => {
  const user = authenticate(request);
  store.logger.mergeContext(request, {
    userId: user.id,
    userRole: user.role,
    authenticated: true
  });
  // 这些数据会在后续的 access log 中自动出现
});

pino

pino: Pino

Defined in: packages/elogs/src/interfaces.ts:529

底层的 Pino Logger 实例。

当内置方法无法满足需求时,可以直接访问 Pino 实例进行高级操作, 如创建子 logger、使用 Pino 特定的 API 等。

Example

// 创建子 logger 用于特定模块
const moduleLogger = logger.pino.child({ module: 'UserService' });
moduleLogger.info('UserService initialized');

// 直接使用 Pino 的级别设置
logger.pino.level = 'debug';

warn

warn: (request, message, context?) => void

Defined in: packages/elogs/src/interfaces.ts:550

记录 WARNING 级别的警告日志。

用于记录非致命的异常情况、过时功能的使用或潜在问题, 需要关注但不至于立即影响系统运行。

Parameters

request

Request

当前请求对象(必填)

message

string

警告消息(必填),描述警告内容

context?

Record<string, unknown>

可选,额外的上下文数据

Returns

void

Example

logger.warn(request, 'Deprecated API version used', {
  apiVersion: 'v1',
  deprecatedSince: '2025-01-01',
  recommendedVersion: 'v2'
});

Last updated on August 15, 2026

Was this page helpful?