swift日志文件linux,Swift - 实现日志输出的封装2(同步记录到文件中去)

在上一篇文章中:Swift - 实现日志输出的封装1(显示出调用的文件名、方法、行号)。我演示了如何封装实现一个日志输出的全局函数。但由于日志都是直接打印到控制台上,如果程序重启后原先的日志信息就会被清空。

文本对日志封装方法做个功能改进,日志除了输出到控制台外,还会同时写到本地文件中去。

1,日志封装代码

这里我将日志信息写到应用的 Caches文件夹中(Library/Caches/log.txt)

为了让日志信息更加丰富,再将日志写到文件中时还会附上调用的日期时间。

//封装的日志输出功能(T表示不指定日志信息参数类型)

func HGLog(_ message:T, file:String = #file, function:String = #function,

line:Int = #line) {

#if DEBUG

//获取文件名

let fileName = (file as NSString).lastPathComponent

//日志内容

let consoleStr = "\(fileName):\(line) \(function) | \(message)"

//打印日志内容

print(consoleStr)

// 创建一个日期格式器

let dformatter = DateFormatter()

// 为日期格式器设置格式字符串

dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

// 使用日期格式器格式化当前日期、时间

let datestr = dformatter.string(from: Date())

//将内容同步写到文件中去(Caches文件夹下)

let cachePath = FileManager.default.urls(for: .cachesDirectory,

in: .userDomainMask)[0]

let logURL = cachePath.appendingPathComponent("log.txt")

appendText(fileURL: logURL, string: "\(datestr) \(consoleStr)")

#endif

}

//在文件末尾追加新内容

func appendText(fileURL: URL, string: String) {

do {

//如果文件不存在则新建一个

if !FileManager.default.fileExists(atPath: fileURL.path) {

FileManager.default.createFile(atPath: fileURL.path, contents: nil)

}

let fileHandle = try FileHandle(forWritingTo: fileURL)

let stringToWrite = "\n" + string

//找到末尾位置并添加

fileHandle.seekToEndOfFile()

fileHandle.write(stringToWrite.data(using: String.Encoding.utf8)!)

} catch let error as NSError {

print("failed to append: \(error)")

}

}

2,使用样例import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

HGLog("程序启动!")

doSomething()

}

func doSomething() {

HGLog("欢迎访问hangge.com")

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

}

}

3,运行效果

(1)我这里运行了两次程序,可以看到 Caches文件夹下已经生成了日志文件。

45de3a7709ffebb53909329841e87dd7.png

(2)打开日志文件,其内容如下。

2ce61ee77c92c45218cf13557f2e2e6f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值