专为 Flutter App 设计的轻量级日志、崩溃/异常上报与用户行为埋点 SDK, 配套自建的数据采集服务与可视化管理后台。
一次接入,覆盖崩溃追踪与用户行为分析两大场景
自动捕获 Flutter 未捕获异常,堆栈自动分组聚合,支持标记处理状态。
页面访问、自定义事件上报,按版本/平台/页面多维度统计分析。
本地持久化队列,断网/崩溃场景下数据不丢失,网络恢复后自动补发。
HMAC-SHA256 请求签名 + 时间戳防重放,数据全程 HTTPS 加密传输。
上传前自动识别并脱敏日志内容中的邮箱、手机号、身份证号、银行卡号(默认开启),降低隐私合规风险。
3 步完成集成,详细 API 文档见 SDK 包内 README
下载 SDK 源码包解压到你的项目旁边,在 pubspec.yaml 中添加本地依赖:
dependencies:
log_sdk:
path: ../log_sdk
import 'package:log_sdk/log_sdk.dart';
void main() {
LogSDK.runGuarded(() async {
WidgetsFlutterBinding.ensureInitialized();
await LogSDK.instance.init(const LogConfig(
appId: 'your-app-id', // 在管理后台创建App后获取
appSecret: 'your-app-secret',
serverUrl: 'https://app-data.tensnuk.com',
environment: LogEnv.prod,
));
// 建议尽早设置(比如App启动时/用户登录成功后),之后上报的事件都会自动带上
LogSDK.instance.setUuid('your-business-device-uuid'); // 业务方自己的设备/安装UUID
LogSDK.instance.setUid('1000123'); // 业务方内部数字用户ID
LogSDK.instance.setUserId('user@example.com'); // 用户名/邮箱等可读标识(可选)
runApp(const MyApp());
});
}
调用下面的方法只是把数据写入本地队列,SDK 会在后台自动定时(默认15秒)批量上传, 崩溃/致命异常会额外触发一次立即上传;不需要手动处理网络请求。
// 日志
LogSDK.instance.i('Network', 'request success');
// 行为埋点
LogSDK.instance.trackEvent('button_click', params: {'btn_id': 'submit'});
LogSDK.instance.trackPage('HomePage');
// 手动上报异常(比如 try/catch 里捕获的业务异常)
try {
await doSomething();
} catch (e, st) {
LogSDK.instance.reportException(e, st);
}
// 如果想立刻看到效果(比如联调测试),可以强制触发一次上传:
await LogSDK.instance.flush();