HDWindowLoggerSwift
iOS 端将输出日志 log 悬浮显示在屏幕上,可以生成日志文件分享,便于在没有连接 xcode 的真机情况下调试信息。可以分享、筛选 log 等操作。使用 SQLite 存储日志信息,支持系统分享和屏幕 FPS 显示。
The iOS side displays the output log log on the screen, and can generate log file sharing, which is convenient for debugging information when the real machine is not connected to xcode. Log information can be filtered and shared. Use SQLite to store log information. support system sharing and FPS
英文文档 | Objective-C 版本
中文文档 | Objective-C 版本
英文介绍
项目地址: https://github.com/DamonHu/HDWindowLoggerSwift
除了在屏幕上显示之外,您还可以设置是否自动滚动 log 进行调试,或者将输出 log 分享到微信、twitter 等平台上供离线查看。同时,您可以搜索输出内容,敏感内容可以用密码加密,共享文件也加密,并可以在线使用密码解密。
项目采用SQLite高效存储,仅在后台运行时记录数据,不影响接口性能。前台运行高效。它基本上同步输出与Xcode的日志,你可以查看与Xcode日志输出对比的GIF图。
预览GIF图片 | Xcode调试GIF |
---|---|
![]() |
![]() |
移动端预览 | Xcode预览 | 分享 & FPS |
---|---|---|
![]() |
![]() |
![]() |
I. 安装
你可以选择使用cocoaPod安装,或者直接将源文件下载到项目。
1.1, cocoaPod安装
pod 'HDWindowLoggerSwift'
1.2, 文件安装
你可以将HDWindowLoggerSwift
文件夹中的文件拖到项目下的项目中。
II. 使用
1、导入头文件
Import HDWindowLoggerSwift
2、显示浮动窗口
HDWindowLoggerSwift.show()
3、打印日志内容
三种输出方法的字体颜色不同,对应的printLog类型也不同。
HDDebugLog(log) //, the log will not be written to the window, only output in xcode
HDNormalLog (log) // Log's textColor is green
HDWarnLog (log) // log's textColor is yellow
HDErrorLog (log) // Log's textColor is red
HDPrivacyLog (log) // Output of encrypted data, the specific encryption method is described in the following encryption
输出格式
13: 45: 00.153> [
"1111111",
"22222222",
"sdjkhfsjkdfjkhsdhjfk",
"3333sjdhgfhjg"
]
III. 更多设置
1、设置是否输出全部信息
HDWindowLoggerSwift.mCompleteLogOut = true
如果设置为输出所有调试信息,输出格式如下,包括输出文件、调用行数和调用的函数
13: 51: 38.498> [File: ViewController.swift]: [Line: 41: [Function: onClickButton ()]]-Log:
[
"1111111",
"22222222",
"sdjkhfsjkdfjkhsdhjfk",
"3333sjdhgfhjg"
]
2、是否在Xcode底部调试栏中同步输出内容
HDWindowLoggerSwift.mDebugAreaLogOut = true
3、为不同用户分开日志文件夹
HDWindowLoggerSwift.mUserID = "1001"
4、清除日志
HDWindowLoggerSwift.cleanLog()
5、隐藏整个日志窗口
HDWindowLoggerSwift.hide()
6、仅隐藏日志输出窗口
HDWindowLoggerSwift.hideLogWindow()
7、设置日志最大记录数,0为不限,默认值为100
HDWindowLoggerSwift.mMaxShowCount = 100
8、删除本地LogFile
HDWindowLoggerSwift.deleteLogFile()
9、本地日志文件的有效期(天数),超出有效期将删除,0为无有效期,默认为7天
HDWindowLoggerSwift.shared.mLogExpiryDay = 0
10、获取日志数组。可以指定日期
//today
HDWindowLoggerSwift.getAllLog()
//Special date
HDWindowLoggerSwift.getAllLog(date: Date(timeIntervalSinceNow: 1000))
如果您想获取所有日志文件,您可以获取存储日志的文件夹,返回一个URL结果,然后自行遍历处理。
HDWindowLoggerSwift.getDBFolder()
例如
let dbFolder = HDWindowLoggerSwift.getDBFolder()
if let enumer = FileManager.default.enumerator(atPath: dbFolder.path) {
while let file = enumer.nextObject() {
if let file: String = file as? String {
if file.hasSuffix(".db") {
//Get the specific log file log
let logFilePath = dbFolder.appendingPathComponent(file, isDirectory: false)
}
}
}
}
LogContent 协议
如果您想自定义输出内容,您可以将并使用此类 LogContent
协议。例如,您可以打印 URL
类型,以便只输出其 路径
。您可以直接设置返回的 logStringValue
。
extension URL: LogContent {
public var logStringValue: String {
return self.path
}
}
IV. 敏感信息输出加密与解密
如果您在调试期间不希望用户看到敏感信息,您可以设置加密,只需两步即可:
// 1. Set the encryption password, 32 characters
HDWindowLoggerSwift.mPrivacyPassword = "12345678901234561234567890123456"
// 2, output encrypted content
HDPrivacyLog ("This is test data 222 for encrypted data")
4.2 解密显示窗口的内容
设置后,显示窗口中的显示内容为 此内容已加密,请在解密后查看
,输入设置的加密密码,点击解密以显示正常的加密内容。
4.1. 解密共享文件
- 如果在显示窗口中已解密数据,则此时共享文件的内容不会再次加密,所有内容都会显示。
- 如果不在显示窗口中解密,则此刻共享的文件内容是AES加密内容,您可以通过搜索
AES在线解密网站
来解密内容,设置如下:
- 模式: CBC
- 填充: Pkcs7
- 数据块: 128位
- 偏移:
abcdefghijklmnop
- 编码: Base64
- 字符集: UTF8
- 密码: 在SDK中自行设置的密码
然后点击解密。
以下是一些建议的在线网站,您也可以自己通过Google搜索
V. 其他说明
- 为了便于查看,分为三种类型:正常、警告和错误。它们对应不同的颜色,便于识别。
- 点击相应的单元格,可以直接将输出日志复制到系统剪贴板。
- 分享被调用的系统共享。你可以分享哪些软件取决于你的手机上安装了哪些软件。
简体中文介绍
项目地址:https://github.com/DamonHu/HDWindowLoggerSwift
调试窗口可以显示在屏幕上,可以设置是否自动滚动日志以便调试,也可以将输出的日志分享到微信、twitter等程序,以便离线查看。同时可以搜索输出内容,敏感内容可以设置密码进行加密,分享出来的文件也会进行加密,可以通过密码在线解密。
该项目使用sqlite
高效存储,后台运行期间只记录数据,不会影响界面性能,前台运行效率高,基本和Xcode同步输出日志,可以查看和xCode日志输出的对比gif图
预览gif图 | Xcode对比gif图 |
---|---|
![]() |
![]() |
手机预览图 | XCode预览图 | 分享 & FPS |
---|---|---|
![]() |
![]() |
![]() |
一、安装
你可以选择使用cocoaPod安装,也可以直接下载源文件拖入项目中
1.1、cocoaPod安装
pod 'HDWindowLoggerSwift'
如果你集成了腾讯的Tencent/wcdb,由于修改优化了sqlite
的系统功能,会导致函数名一样报错,可以使用wcdb版本
pod 'HDWindowLoggerSwift/WCDB'
1.2、文件安装
可以将项目目录下,HDWindowLoggerSwift
文件夹内的文件拖入项目即可
二、使用
只需简单三步即可调用
1、导入头文件
import HDWindowLoggerSwift
2、显示悬浮窗
HDWindowLoggerSwift.show()
3、打印日志内容
四种输出方式,字体颜色显示不同,对应的printLog不同的类型
HDDebugLog(log) //调试输出,内容不会写入到窗口,只在xcode输出
HDNormalLog(log) //日志为绿色
HDWarnLog(log) //日志为黄色
HDErrorLog(log) //日志为红色
HDPrivacyLog(log) //加密数据的输出,具体加密方式在下面的加密中说明
log可以是一个、也可以是多个参数
HDNormalLog("点击了按钮111")
HDNormalLog("输出多个",22,33)
输出格式
13:45:00.153 > [
"1111111",
"22222222",
"sdjkhfsjkdfjkhsdhjfk",
"3333sjdhgfhjg"
]
三、更多设置
通过其他设置可以实现更多功能
1、设置是否输出全部信息
HDWindowLoggerSwift.mCompleteLogOut = true
如果设置为输出全部调试信息,那么输出的格式是下面这样的,包含了输出文件、调用的行数和调用的函数
13:51:38.498 > [File:ViewController.swift]:[Line:41:[Function:onClickButton()]]-Log:
[
"1111111",
"22222222",
"sdjkhfsjkdfjkhsdhjfk",
"3333sjdhgfhjg"
]
2、是否在xcode底部的调试栏同步输出内容
HDWindowLoggerSwift.mDebugAreaLogOut = true
3、针对不同用户设置独立的日志文件夹
HDWindowLoggerSwift.mUserID = "1001"
4、清空日志
HDWindowLoggerSwift.cleanLog()
5、隐藏整个日志窗口
HDWindowLoggerSwift.hide()
6、仅隐藏日志输出窗口
HDWindowLoggerSwift.hideLogWindow()
7、设置显示日志最大记录数,0表示不限制,默认为100
HDWindowLoggerSwift.mMaxShowCount = 100
8、删除本地日志文件
HDWindowLoggerSwift.deleteLogFile()
9、本地日志文件的有效期(天),超出有效期的本地日志将被删除,0表示没有有效期,默认为7天
HDWindowLoggerSwift.mLogExpiryDay = 0
10、获取数据库存储的日志信息数组,也可以指定日期
//获取今日的日志
HDWindowLoggerSwift.getAllLog()
//指定日期
HDWindowLoggerSwift.getAllLog(date: Date(timeIntervalSinceNow: 1000))
如果你想获取所有日志文件,可以获取日志存储的文件夹,返回的是一个URL结果,然后你进行遍历去处理
HDWindowLoggerSwift.getDBFolder()
例如
let dbFolder = HDWindowLoggerSwift.getDBFolder()
if let enumer = FileManager.default.enumerator(atPath: dbFolder.path) {
while let file = enumer.nextObject() {
if let file: String = file as? String {
if file.hasSuffix(".db") {
//获取到具体的log文件日志
let logFilePath = dbFolder.appendingPathComponent(file, isDirectory: false)
}
}
}
}
LogContent协议
如果你想自定义输出的内容,可以集成并实现该类型的LogContent协议,例如设置打印URL
类型只输出它的path
,可以直接设置返回的logStringValue
即可。
extension URL: LogContent {
public var logStringValue: String {
return self.path
}
}
四、 敏感信息输出加密和解密
如果存在敏感信息,不希望用户或者手机调试时看到,简单两步就可以设置加密
//1、设置加密密码,32个字符数字
HDWindowLoggerSwift.mPrivacyPassword = "12345678901234561234567890123456"
//2、输出加密内容
HDPrivacyLog("这个是加密数据的测试数据222")
4.2、显示窗内容解密
设置之后,在显示窗中的显示为该内容已加密,请解密后查看
,输入设置的加密密码然后点击解密之后即可显示正常的加密内容。
4.1、 分享文件解密
- 如果已经在显示窗解密了数据,此时分享的文件内容不会加密,会显示所有内容。
- 如果在显示窗中未解密,此时分享出的文件内容为AES加密内容,可以搜索
AES在线解密的网站
去解密内容,设置参照下图:
- 模式: CBC
- 填充: Pkcs7
- 数据块: 128位
- 偏移量: abcdefghijklmnop
- 编码: Base64
- 字符集: UTF8
- 密码: 你自己在SDK中设置的密码
然后点击解密即可。
这里推荐几个在线的网站,你也可以自己百度
五、其他说明
- 为了方便查看,分为普通、警告、错误三种类型,对应了三种不同的颜色。
- 点击对应的cell可以直接将输出log复制到系统剪贴板
- 分享调用的系统分享,可以分享到哪个软件取决于你手机上安装的有哪些软件。