【Swift4】Xcodeのデバックログにファイル名や関数名や行数をつける方法【Objective-C】【iOS11】

2020年8月29日

Xcodeのでバックログは開発者にとってとても貴重な情報源の一つですが、単なるprintやNSLogを使っているだけだと、デバックログを最大限に生かすことはできません。

ただ単に、記述したログを出すだけではなく、ログを出すプログラムが書かれたファイル名、関数名、行数が出力するように変更するだけで、プログラムの開発は飛躍的に向上させることができます。

今回はデバックログを最大限に活かせるようなデバックログのカスタム方法をご紹介します。

デバックログにファイル名や関数名や行数をつける

Objective-C

デバックログのカスタム方法

PrefixHeader.pchなどに記載するとどこでも使えるので便利です。

#ifdef DEBUG
    #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
    #define DLog(...)
#endif

デバックログの使用方法

DLog(@"test");

Swift4

デバックログのカスタム方法

import UIKit

class Debug: NSObject {
    
    class func log(_ obj: Any?,
                   file: String = #file,
                   line: Int = #line,
                   function: String = #function
        ) {
        #if DEBUG
            var filename = file
            if let match = filename.range(of: "[^/]*$", options: .regularExpression) {
                filename = filename.substring(with: match)
            }
            if let obj = obj {
                print("[File:\(filename)][Line:\(line)][Function:\(function)] : \(obj)")
            } else {
                print("[File:\(filename)][Line:\(line)][Function:\(function)]")
            }
        #endif
    }

}

デバックログの使用方法

Debug.log("test")