Swift3でのロギングどうしようかな、ライブラリを使うべきかなというところ「Swiftの自前ログクラス」を見つけ試したところ、例によってSwift3ではコンパイルが通らなかった部分がありましたので、Swift3対応版をば。
Usage
Logger.info(message: "init")
>> [INFO] => "init" 2017/01/31 11:11:11 init() MyViewController.swift:(37)
Logger.debug(message: "deinit")
>> [DEBUG] => "deinit" 2017/01/31 12:12:12 deinit() MyViewController.swift:(45)
Logger.swift
import Foundation
class Logger{
class func debug(
message: String,
function: String = #function,
file: String = #file,
line: Int = #line) { Logger.write(loglevel: "[DEBUG]", message: message, function: function, file: file, line: line) };
class func info(
message: String,
function: String = #function,
file: String = #file,
line: Int = #line) { Logger.write(loglevel: "[INFO]", message: message, function: function, file: file, line: line) };
class func warning(
message: String,
function: String = #function,
file: String = #file,
line: Int = #line) { Logger.write(loglevel: "[WARNING]", message: message, function: function, file: file, line: line) };
class func error(
message: String,
function: String = #function,
file: String = #file,
line: Int = #line) { Logger.write(loglevel: "[ERROR]", message: message, function: function, file: file, line: line) };
class func write(
loglevel: String,
message: String,
function: String,
file: String,
line: Int) {
let now = NSDate() // 現在日時の取得
let dateFormatter = DateFormatter()
dateFormatter.locale = NSLocale(localeIdentifier: "ja_JP") as Locale!
dateFormatter.timeStyle = .medium
dateFormatter.dateStyle = .medium
let nowdate = dateFormatter.string(from: now as Date)
var filename = file
if let match = filename.range(of: "[^/]*$", options: .regularExpression) {
filename = filename.substring(with: match)
}
print("\(loglevel) => \"\(message)\" \(nowdate) \(function) \(filename):(\(line))")
}
}
もっとリッチなロギングが欲しくなったらそのとき考えるということで。