Appearance
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| 参数 | 类型 | 说明 |
|---|---|---|
message | string | 日志消息 |
data | any | 可选,附加数据(任意可序列化对象) |
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>调用后会:
- 尝试发送队列中剩余的日志(best effort)
- 停止定时刷新定时器
- 停止健康检查定时器
销毁后调用 info/warn/error 无效果。
registerContentBridge
仅在 @duty/logs-sdk/browser-background 入口提供。
注册 Chrome Extension 消息监听器,接收 Content Script 发来的日志并转发给 Logger。
ts
function registerContentBridge(logger: Logger): () => void| 参数 | 类型 | 说明 |
|---|---|---|
logger | Logger | Background 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;
}