Last active
February 11, 2016 18:15
-
-
Save akimacho/e298874d560353d32cfe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Log::Minimal風ログクラス | |
// | |
import Foundation | |
// ログレベル | |
enum LogLevel { | |
// http://qiita.com/suesan/items/485a5078c64c0bc67432 より引用 | |
// 対象者 : 開発者 | |
// 開発中のデバッグ用出力。商用環境では出力しない。 | |
case DEBUG | |
// 対象者 : 開発者 | |
// 開発者が運用中に調査等で参照する情報。不具合を見つけるための手がかりに使用。 | |
case INFO | |
// 対象者 : 運用者/開発者 | |
// 運用中に発生したシステムに関する問題。直ちには問題がない状態。 | |
case WARN | |
// 対象者 : 運用者/開発者 | |
// サービスが継続できない障害。原因究明の情報 | |
case CRITICAL | |
// 対象者 : 運用者/開発者 | |
// 意味はCRITICALと同じである | |
case ERROR | |
func toString() -> String {// 文字列に変換する | |
switch self { | |
case DEBUG: | |
return "[DEBUG]" | |
case INFO: | |
return "[INFO]" | |
case WARN: | |
return "[WARN]" | |
case CRITICAL: | |
return "[CRITICAL]" | |
case ERROR: | |
return "[ERROR]" | |
} | |
} | |
} | |
public class Log { | |
static var ENV_DEBUG = true // DEBUGレベルの出力をするか否か | |
static let dateFormatter = NSDateFormatter() | |
// 現在時刻NSDateを文字列にする | |
private static func getCurrentDateString() -> String { | |
Log.dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" | |
return Log.dateFormatter.stringFromDate(NSDate()) | |
} | |
// DEBUG | |
static func debugf(target: Any, filename: String = __FILE__, line: Int = __LINE__, function: String = __FUNCTION__) { | |
#if DEBUG | |
Log.log(.DEBUG, target: target, filename: filename, line: line, function: function) | |
#else | |
if Log.ENV_DEBUG { | |
Log.log(.DEBUG, target: target, filename: filename, line: line, function: function) | |
} | |
#endif | |
} | |
// INFO | |
static func infof(target: Any, filename: String = __FILE__, line: Int = __LINE__, function: String = __FUNCTION__) { | |
Log.log(.INFO, target: target, filename: filename, line: line, function: function) | |
} | |
// WARN | |
static func warnf(target: Any, filename: String = __FILE__, line: Int = __LINE__, function: String = __FUNCTION__) { | |
Log.log(.WARN, target: target, filename: filename, line: line, function: function) | |
} | |
// CRITICAL | |
static func critf(target: Any, filename: String = __FILE__, line: Int = __LINE__, function: String = __FUNCTION__) { | |
Log.log(.CRITICAL, target: target, filename: filename, line: line, function: function) | |
} | |
// WARN | |
static func croakf(target: Any, filename: String = __FILE__, line: Int = __LINE__, function: String = __FUNCTION__) { | |
Log.log(.WARN, target: target, filename: filename, line: line, function: function) | |
exit(EXIT_FAILURE) // プログラムを異常終了させる | |
} | |
// 日時 レベル オブジェクト 関数名 ファイル名 行数 を出力する | |
private static func log(level: LogLevel, target: Any, filename: String, line: Int, function: String) { | |
print(Log.getCurrentDateString(), level.toString(), target, "in", function, | |
"at", filename.componentsSeparatedByString("/").last!, "line \(line)") | |
} | |
} | |
/*** | |
// デバッグ出力をしたくない場合は | |
// Log.ENV_DEBUG = false | |
// デフォルトでは true となっている | |
// もしくは | |
// Build Settings → Swift Compiler → Other Swift Flags の Debug に -DDEBUG を追加する | |
Log.debugf("デバッグレベル出力される."); | |
Log.infof("インフォレベルが出力される." ); | |
Log.warnf("ワーニングレベルが出力される."); | |
Log.critf("クリティカルレベルが出力される."); | |
Log.debugf(String(format: "1 + 1 = %d", 2)) | |
Log.infof(NSCalendar(identifier: NSCalendarIdentifierGregorian)!.components([.Year, .Month, .Day], fromDate: NSDate())) | |
Log.croakf("GoodBye") // ログを出力してプログラムを終了する | |
***/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment