打造一个更利于Debug的Swift控制台

打造一个更利于Debug的Swift控制台

Aron Lv3

debug-console
debug-console

安装

首先我们安装所需要的配置:

添加XCGLogger

使用cocoapods添加就可以,在你的Podfile添加下面这句:

1
pod 'XCGLogger','~>3.5'

安装XcodeColors

下载工程文件XcodeColors,打开工程文件,run一下~~~
在Alcatraz中也可以找到,直接安装就好.

安装KZLinkedConsole

安装方法同上,链接在这里,Alcatraz中也能搜索到.

基本使用

打印需要借助XCGLogger:

1
import XCGLogger

首先需要初始化log对象,XCGLogger的初始化看起来比较繁琐,但是十分见名知意:

1
let log = XCGLogger.defaultInstance()

此时只是获得了一个log对象,要想要使用的话还需要一些配置,它的配置方法看起来像是这个样子的:

1
2
3
4
5
6
7
8
9
10
log.setup(XCGLogger.LogLevel,
showLogIdentifier: Bool,
showFunctionName: Bool,
showThreadName: Bool,
showLogLevel: Bool,
showFileNames: Bool,
showLineNumbers: Bool,
showDate: Bool,
writeToFile: AnyObject?,
fileLogLevel: XCGLogger.LogLevel?)

showLogIdentifier等后面的一个Bool参数,顾名思义,是决定是否输出一些附加信息的参数.
这里的XCGLogger.LogLevel表示打印输出的等级,枚举值,如果你设置了一个低等级的日志等级,那么高于此等级的日志打印就不会被输出了,XCGLogger的输出等级从高到低分别是:

  • .Verbose
  • .Debug
  • .Info
  • .Warning
  • .Error
  • .Severe
  • .None

XCGLogger的默认日志打印模式是没有颜色的,所以需要设置其以带颜色的模式打印:

1
log.xcodeColorsEnabled = true

此时使用这些方法打印一些东西来看一下效果:

1
2
3
4
log.debug("Debug信息")
log.warning("Warning信息")
log.error("Error信息")
log.info("一般内容信息")

此时的控制台看起来是这个样子的:

debug
debug

看起来是有点意思了,但是颜色貌似有点不太和谐,所以XCGLogger提供了一个属性用于设定不同等级的log对应颜色的映射,设置一下,就像这样:

1
2
3
4
5
6
7
8
log.xcodeColors = [
.Verbose: .lightGrey,
.Debug: .darkGrey,
.Info: .darkGreen,
.Warning: .orange,
.Error: .red,
.Severe: .whiteOnRed
]

现在按照同样的方式打印一下看看:

debug
debug

以上实际上就是开头那张图片的效果的完整实现方式,但是有一个问题是:如果每次都setup,配置颜色的话,未免太麻烦了.

进阶

编写一个Logger.swift,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public let log: XCGLogger = {
let log = XCGLogger.defaultInstance()
let logPath : NSURL = cacheDirectory.URLByAppendingPathComponent("XCGLogger.Log")
#if DEBUG
log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil)
#else
log.setup(.Severe, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil)
#endif
log.xcodeColorsEnabled = true
log.xcodeColors = [
.Verbose: .lightGrey,
.Debug: .darkGrey,
.Info: .darkGreen,
.Warning: .orange,
.Error: .red,
.Severe: .whiteOnRed
]
return log
}()

private var documentsDirectory: NSURL {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.endIndex-1]
}

private var cacheDirectory: NSURL {
let urls = NSFileManager.defaultManager().URLsForDirectory(.CachesDirectory, inDomains: .UserDomainMask)
return urls[urls.endIndex-1]
}

使用:swift文件之间不需要import,所以使用可以直接log.debug(),log.info()…
因为其只是一个全局常量而已.

–End Of File–

  • 标题: 打造一个更利于Debug的Swift控制台
  • 作者: Aron
  • 创建于 : 2016-08-24 09:59:13
  • 更新于 : 2025-10-14 09:29:25
  • 链接: https://likeso.github.io/2016/08/24/swift-debug-console/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论