Appearance
Browser Background
适用于浏览器扩展的 Background Script(Service Worker)。
数据流
Content Script Background Script Duty Logs Server
───────────── ───────────────── ────────────────
logger.info('...')
│
├──chrome.runtime.sendMessage──▶ onMessage listener
│
├──▶ logger.info('...')
│
└──fetch──▶ POST /api/log/batch
(X-API-Key header)Background Script 负责:
- 自身的日志记录(直接通过 HTTP 发送)
- 接收 Content Script 转发的日志(通过
registerContentBridge)
导入
ts
import { createLogger, registerContentBridge } from '@duty/logs-sdk/browser-background';初始化
ts
// 1. 创建 logger
const logger = createLogger({
appId: 'my-extension',
appName: 'My Browser Extension',
version: '1.0.0',
apiKey: 'your-api-key',
});
// 2. 注册 Content Script 桥接
const removeBridge = registerContentBridge(logger);registerContentBridge 会注册 chrome.runtime.onMessage 监听器,自动接收 Content Script 发来的日志并转发。
Background 自身的日志
ts
// Background Script 自己的日志
logger.info('扩展已启动');
logger.error('后台任务失败', { task: 'sync', error: 'network timeout' });清理
当扩展卸载或需要清理时:
ts
// 移除 Content Script 桥接监听器
removeBridge();
// 销毁 logger
logger.destroy();完整示例
ts
// background.ts
import { createLogger, registerContentBridge } from '@duty/logs-sdk/browser-background';
const logger = createLogger({
appId: 'duty-helper',
appName: 'Duty Helper Extension',
version: chrome.runtime.getManifest().version,
apiKey: 'your-api-key',
});
const removeBridge = registerContentBridge(logger);
logger.info('Extension background started');
// 监听扩展安装事件
chrome.runtime.onInstalled.addListener((details) => {
logger.info('Extension installed', { reason: details.reason });
});