Skip to content

API 参考

createLogger

创建 Logger 实例的工厂函数。根据导入路径不同,内部使用不同的 Transport。

ts
function createLogger(config: LoggerConfig): Logger

参数:

ts
interface LoggerConfig {
  appId: string;        // 应用唯一标识
  appName: string;      // 应用显示名称
  version: string;      // 应用版本号
  apiKey: string;       // API 密钥
  endpoint?: string;    // 服务器地址,默认 'http://localhost:5842'
  mode?: SdkMode;       // 运行模式,默认 'silent'
  bufferSize?: number;  // 缓冲区大小,默认 100
  flushInterval?: number; // 批量发送间隔(ms),默认 5000
}

返回值: Logger 实例

示例:

ts
import { createLogger } from '@duty/logs-sdk/web';

const logger = createLogger({
  appId: 'my-app',
  appName: 'My App',
  version: '1.0.0',
  apiKey: 'your-api-key',
});

Logger

logger.info(message, data?)

记录 info 级别日志。

ts
logger.info(message: string, data?: any): void
参数类型说明
messagestring日志消息
dataany可选,附加数据(任意可序列化对象)

logger.warn(message, data?)

记录 warn 级别日志。

ts
logger.warn(message: string, data?: any): void

参数同 info

logger.error(message, data?)

记录 error 级别日志。

ts
logger.error(message: string, data?: any): void

参数同 info

logger.destroy()

销毁 Logger 实例,释放资源。

ts
logger.destroy(): Promise<void>

调用后会:

  1. 尝试发送队列中剩余的日志(best effort)
  2. 停止定时刷新定时器
  3. 停止健康检查定时器

销毁后调用 info/warn/error 无效果。


registerContentBridge

仅在 @duty/logs-sdk/browser-background 入口提供。

注册 Chrome Extension 消息监听器,接收 Content Script 发来的日志并转发给 Logger。

ts
function registerContentBridge(logger: Logger): () => void
参数类型说明
loggerLoggerBackground Script 的 Logger 实例

返回值: 清理函数,调用后移除消息监听器。

示例:

ts
import { createLogger, registerContentBridge } from '@duty/logs-sdk/browser-background';

const logger = createLogger({ /* ... */ });
const removeBridge = registerContentBridge(logger);

// 清理
removeBridge();

类型定义

LogLevel

ts
type LogLevel = 'info' | 'warn' | 'error';

SdkMode

ts
type SdkMode = 'silent' | 'verbose' | 'debug';

LogEntry

SDK 内部构建并发送的日志条目结构:

ts
interface LogEntry {
  appId: string;
  appName: string;
  version: string;
  level: LogLevel;
  message: string;
  data?: any;
  ts: string; // ISO 8601 时间戳
}

LoggerConfig

ts
interface LoggerConfig {
  appId: string;
  appName: string;
  version: string;
  apiKey: string;
  endpoint?: string;
  mode?: SdkMode;
  bufferSize?: number;
  flushInterval?: number;
}