TinyLog iOS v3.0接入文档

这篇具有很好参考价值的文章主要介绍了TinyLog iOS v3.0接入文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景

为在线教育部提供高效、安全、易用的日志组件。

2.功能介绍

2.1 日志格式化

目前输出的日志格式如下:

日志级别/[YYYY-MM-DD HH:MM:SS MS] TinyLog-Tag: |线程| 代码文件名:行数|函数名|日志输出内容
  • 触发flush到文件的时机:

    1. 每15分钟定时触发;
    2. mmap buffer满时触发。
  • 日志清理时机:
    组件init时,会自动清理过期日志,目前默认保留7天日志。

2.2 支持压缩加密

日志组件可通过接口设置是否压缩以及加密。

  • 压缩模式为:zlib默认压缩模式;
  • 加密模式为:RSA+AES流式加密。
2.3 支持日志上传和打包

调用日志上传和打包接口时,日志组件会根据传入参数时间将所需文件按照统一格式进行压缩打包。

2.4 支持FancyLog

在相应场景调用FancyLog接口,日志上传到后台后,可查看根据调用顺序绘制出来的流程图。

2.5 支持日志脱敏

可支持以下数据的脱敏:

  • 大陆手机号
  • 18位身份证号
  • 邮箱号
  • 自定义替换关键词:正则表达式、$(###)和${###}

$(###) 和${###} 区别是,前者为非贪婪匹配,后者为贪婪匹配,示例如下:

SensitiveConvertor *convertor = [[SensitiveConvertor alloc] initReplacerWithPattern:@"我不是$(###),"];
NSString *convertString = [convertor replace:@"我不是潘金莲,我是李雪莲,"];
//output: 我不是******,我是李雪莲,
SensitiveConvertor *convertor = [[SensitiveConvertor alloc] initReplacerWithPattern:@"我不是${###},"];
NSString *convertString = [convertor replace:@"我不是潘金莲,我是李雪莲,接下来"];
//output: 我不是******,接下来

3.使用说明

3.1 日志接口

组件内已经预定义好了一些宏,可以直接使用:

  • 接口列表
#pragma mark -- TinyLog
#define TinyLogVerbose(TAG, fmt, ...)
#define TinyLogInfo(TAG, fmt, ...)
#define TinyLogDebug(TAG, fmt, ...)
#define TinyLogWarning(TAG, fmt, ...)
#define TinyLogError(TAG, fmt, ...)
	
#pragma mark -- TLog
#define TLogVerbose(fmt, ...)
#define TLogInfo(fmt, ...)
#define TLogDebug(fmt, ...)
#define TLogWarning(fmt, ...)
#define TLogError(fmt, ...)
  • 使用示例:
TinyLogInfo(@"ABCmouse", @"This is a test msg (%@) With A TAG.", @"test111");
TLogInfo(@"This is a test msg (%@) without A TAG.", @"test222");
3.2 参数设置接口
  • 接口列表
#pragma mark 参数设置接口
// 是否打开控制台,类型为bool。默认关闭
- (void)enableLogConsole:(BOOL)enable;
// 是否压缩,类型为bool。默认压缩
- (void)enableLogCompress:(BOOL)enable;
// 是否加密,类型为bool。默认加密
- (void)enableLogEncrypt:(BOOL)enable;
// 单个日志文件大小限制,类型为int。单位为MB。默认为-1,不限制
- (void)setLogSingleSizeLimit:(int)logSingleSizeLimit;
// 设置日志级别
- (void)setLogLevel:(TLogPriority)logPriority;
  • 使用示例:
[[TinyLog shareInstance] enableLogConsole:YES];
// 其他接口调用方式类似,根据接口说明传入参数调用即可。
3.3 初始化接口
#pragma mark 初始化接口
// TinyLog初始化接口
- (void)setAppkey:(NSString *)appkey;
// 设置用户ID
- (void)setIdentifyID:(NSString *)identifyID;
// !!!必须设置,不然无法上传日志
- (void)setTinyChannel:(id<ITinyChannel>)tinyChannel;
3.4 日志上传及打包接口
#pragma mark 日志上传接口
//上报区间内的
- (void)uploadFileBegin:(long long)beginTime end:(long long)endTime;
// 上报 指定某一天的
- (void)uploadFileDate:(NSDate *)date;
// 上报 前 hours 小时的
- (void)uploadFileHous:(NSInteger)hours;

#pragma mark 日志打包接口
//上报区间内的
- (NSString *)getFileBegin:(long long)beginTime end:(long long)endTime;
// 上报 指定某一天的
- (NSString *)getFileDate:(NSDate *)date;
// 上报 前 hours 小时的
- (NSString *)getFileHous:(NSInteger)hours;
3.5 记录crash日志接口
#pragma mark 记录crash日志接口
- (void)setCrashLogWithID:(int)crashID crashContent:(NSString *)crashContent;
3.6 tinylog内部错误打印接口
#pragma mark tinylog内部错误打印接口
+ (void)setLogExceptionReporter:(id <LogExceptionReporterDelegate>)exceptionReporter;
+ (id <LogExceptionReporterDelegate>)getLogger;

调用示例:

@interface YourClass ()<LogExceptionReporterDelegate>
// ...
@end

@implementation YourClass

- (void)YourMethod {
// ...
    [TinyLog setLogExceptionReporter:self];
// ...
}

- (void)exceptionReporter:(int)errCode ErrMsg:(NSString *)errMsg {
    NSLog(@"%d(%@)", errCode, errMsg);// TODO
}

- (void)onCrashNotify:(int)crashID {
    NSLog(@"onCrashNotify(%d)", crashID);
}
3.6 FancyLog接口
  • 接口列表
/*场景相关*/
+ (void)loadScene:(NSString *)sceneName;
+ (void)loadSceneSuccess:(NSString *)sceneName;
+ (void)loadSceneFailed:(NSString *)sceneName;

/*操作相关*/
+ (void)swithBack:(NSString *)msg;
+ (void)switchFront:(NSString *)msg;
+ (void)click:(NSString *)msg;

/*出现异常*/
+ (void)exception:(NSException *)exception Msg:(NSString *)msg;
+ (void)crash:(NSException *)exception Msg:(NSString *)msg;

/*过程*/
+ (void)processStart:(NSString *)msg;
+ (void)processing:(NSString *)msg;
+ (void)processEnd:(NSString *)msg;

/*自定义事件*/
+ (void)event:(NSString *)event;
  • 调用示例
// ...
// 根据实际场景调用接口
[FancyLog loadScene:@"This is A Test Secene"];
// ...
3.7 日志脱敏接口
  • 接口列表
#pragma mark -- 转换接口
/// 日志脱敏配置接口1
/// @param converPhone 是否需要对手机号进行脱敏,YES:需要,NO:不需要
/// @param convertIDCard 是否需要对身份证号进行脱敏,YES:需要,NO:不需要
/// @param convertEmail 是否需要对邮箱号进行脱敏,YES:需要,NO:不需要
/// @param customPattern 自定义关键字,支持正则、$(###)、${###}
- (id)initWithConvertPhone:(BOOL)converPhone ConvertIDCard:(BOOL)convertIDCard ConvertEmail:(BOOL)convertEmail CustomPattern:(NSString *)customPattern;

/// 转换接口
/// @param originString 待脱敏的字符串
/// @return 脱敏后的字符串
- (NSString *)convert:(NSString *)originString;

#pragma mark -- 替换接口
/// 日志脱敏配置接口2
/// @param pattern 自定义关键字,支持正则、$(###)、${###}
- (id)initReplacerWithPattern:(NSString *)pattern;

/// 替换接口
/// @param originString 待脱敏的字符串
/// @return 脱敏后的字符串
- (NSString *)replace:(NSString *)originString;
  • 调用示例
SensitiveConvertor *convertor1 = [[SensitiveConvertor alloc] initWithConvertPhone:YES ConvertIDCard:YES ConvertEmail:YES CustomPattern:@"我不是${###},"];
    NSString *convertString1 = [convertor1 convert:@"我的手机号是18011112222,身份证号是110101199001011234,邮箱号是tinylog@qq.com,我不是潘金莲,我是李雪莲,接下来"];

SensitiveConvertor *convertor2 = [[SensitiveConvertor alloc] initReplacerWithPattern:@"我不是$(###),"];
NSString *convertString2 = [convertor2 replace:@"我不是潘金莲,我是李雪莲,"];

4.其他

4.1 日志文件解密

  • 在线解密
    调用上传接口后,日志会上传到http://tiny.edu.woa.com/log

    • 点击下载按钮,可下载解密解压后的日志文件
    • 点击在线查看按钮,可在线查看解密解压后的日志内容
      TinyLog iOS v3.0接入文档,TinyLog
  • 本地解密
    调用打包接口后,根据返回的文件路径,使用本地解密工具解密,具体使用方法可参考Tinylog本地解密工具

4.2 Crash场景处理

如果希望能将Crash堆栈也写进日志文件里,可在崩溃监听回调函数中调用TinyLog的写日志接口,以RQD的崩溃监听回调函数为例:文章来源地址https://www.toymoban.com/news/detail-805961.html

int app_crash_handler_callback() {
    // ...
    // 获取sdk生成的crash.log
    NSString *crashLog = [[CrashReporter sharedInstance] getCrashLog];
    TLogError(@"crash log:%@", crashLog);
    // 或者调用 [[TinyLog shareInstance] setCrashLogWithID:_crashID crashContent:crashLog];
    return 0;
}

// ...
[[CrashReporter sharedInstance] setUserCrashHandlerCallback:app_crash_handler_callback];

到了这里,关于TinyLog iOS v3.0接入文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS websocket接入的简单使用

    接触WebSocket 考虑到普通的HTTP 通信方式只能由客户端主动拉取,服务器不能主动推给客户端 。然后就想出的2种解决方案。 1.和后台沟通了一下 他们那里使用的是WebSocket ,所以就使用WebSocket让我们app端和服务器建立长连接。这样就可以事实接受他发过来的消息 2.使用推送,也

    2024年02月02日
    浏览(31)
  • 人工智能AI绘画接入使用文档

    AI作画,用户可以在平台上输入各种与风格、主题、氛围有关的,AI根据这些在互联网巨量的资源和素材中搜索、学习,最后糅合与拼接成一些符合要求的画作. 重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议 请求方式: POST 序号 参数 是否必须

    2024年02月11日
    浏览(66)
  • Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入

    你好! 这将是一个系列的文章 第一篇 介绍客户端里支付的调起以及购买。 第二篇 介绍后台对购买结果的验证以及发货(IOS)。 第三篇 介绍后台对购买结果的验证以及发货(Android)。 第四篇 介绍后台对内购退单问题的处理(IOS欺诈检测以及欺诈信息反馈)。 我们是用的

    2024年04月13日
    浏览(44)
  • iOS接入IJKPlayer遇到的问题汇总

    这里有一个我自己编译的IJKMediaFramework,能解决目前Github上反馈很多常见的IJKPlayer使用问题(包含播放异常,UI主线程Crash等),替换自己项目中的IJKMediaFramework即可 链接: https://pan.baidu.com/s/1UO-YfN_1YIDOX81bgW8bag?pwd=vq4u 提取码: vq4u 复制这段内容后打开百度网盘手机App,操作更方便哦

    2024年02月10日
    浏览(42)
  • IOS-高德地图SDK接入-Swift

    这个要前往高德开发平台注册成为个人开发者然后在控制台创建一个应用: 高德开发平台 注册步骤就不写了,写一下创建应用的步骤: 复制这个就可以了,然后提交 先import 然后设置,***就是上面申请的key 在显示地图前,要进行隐私合规设置,开发的时候这样就行了: 这里

    2024年01月18日
    浏览(43)
  • IOS高德地图SDK接入-Swift

    这个要前往高德开发平台注册成为个人开发者然后在控制台创建一个应用: 高德开发平台 注册步骤就不写了,写一下创建应用的步骤: 复制这个就可以了,然后提交 先import 然后设置,***就是上面申请的key 在显示地图前,要进行隐私合规设置,开发的时候这样就行了: 这里

    2024年02月01日
    浏览(90)
  • Unity与iOS交互(2)——接入SDK

    【前言】 接入Android和iOS SDK有很多相同的地方,建议先看下Android SDK如何接入。  【UnityAppController详解】  整个程序的入口在MainApp文件下的 main.mm 文件中,先加载了unityframework,然后调用runUIApplicationMain。源码如下:(这些源码在Xcode工程里都有) 可以看看 UnityFramework.h 文件中

    2024年02月13日
    浏览(115)
  • ChatGpt接入Word文档,让你秒变职场达人!

    今天跟大家分享下我们如何使用VBA代码,将ChatGpt接入Word文档,操作非常的简单,但是开始之前我们需要做2项准备 1.     获取ChatGpt的API 2.     魔法上网 准备好这2件事后,我们就可以着手制作了: 一,设置代码   二.插入模块 复制代码后,我们在Word文档中点击【开发工

    2024年02月05日
    浏览(58)
  • 阿里云Queen智能美化特效SDK如何接入iOS

    阿里云Queen智能美化特效SDK主要为移动端App提供实时美颜、滤镜、贴纸等图像处理能力。以下是iOS平台接入的基本步骤: 获取SDK : 首先,您需要在阿里云官方网站注册并登录,然后在产品列表中找到Queen智能美化特效服务,按照指引完成订购并获取SDK包。 导入SDK : 将下载的

    2024年01月24日
    浏览(38)
  • Unity 之 接入IOS内购过程解析【文末源码】

    看完此文章你可以了解IOS内购接入全过程,可以学习到Unity从零接入内购功能。另外此博文和文末源码没有涉及到掉单补单部分逻辑。 一台mac系统机器 苹果开发者账号 Unity2019.4.x (不同版本,3步骤略有不同) Xcode (我的版本12.5) PS:若公司已有运营人员在后台操作过了,可以

    2023年04月17日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包