如何在iOS上控制NSLog消息的错误级别?

时间:2011-06-09 14:53:12

标签: ios nslog

我发现NSLog()会记录错误级别为Warning的所有邮件,但是当我查看控制台时,我会看到其他错误级别为Info或“错误”的邮件。

如何控制邮件的错误级别?

3 个答案:

答案 0 :(得分:9)

我不相信您可以更改NSLog()消息的日志记录级别。您可以使用第三方日志记录解决方案(或编写您自己的宏)将不同的错误级别字符串插入到日志中,然后可以对其进行过滤。

查看以下库以了解预构建的日志记录解决方案。

答案 1 :(得分:5)

使用ASL日志:

asl_log(NULL, NULL, ASL_LEVEL_INFO, "Hello World!!!");

ASL_LEVEL_INFO可以是以下任何一种:

ASL_LEVEL_EMERG 
ASL_LEVEL_ALERT
ASL_LEVEL_CRIT
ASL_LEVEL_ERR
ASL_LEVEL_WARNING
ASL_LEVEL_NOTICE
ASL_LEVEL_INFO
ASL_LEVEL_DEBUG

答案 2 :(得分:1)

OSLog可以替代NSLog的另一种可能的选择是OSLog,它具有一些不错的优点,并且灵活易用。 要使用它,请创建OSLog扩展以设置一些配置:

import Foundation
import os.log

extension OSLog {
    private static var subsystem = Bundle.main.bundleIdentifier!

    /// Defining my custom log objects
    /// Log View Cycles.
    static let viewCycle = OSLog(subsystem: subsystem, category: "View Cycle")
    /// Log User Actions.
    static let userAction = OSLog(subsystem: subsystem, category: "User Action")
}

然后只要在View Controller中需要时就使用它:

 import UIKit
 import os.log

 class MenuViewController: UIViewController {

   @IBAction func didTapMenu(_ sender: UIBarButtonItem) {
      os_log("Did tap %@ option", log: .userAction, type: .info, "Some UI element")
   }
}

如您所见,您可以将日志级别指定为类型参数,并定义自己的自定义日志对象。

控制台输出: 2019-12-11 10:21:44.788204-0300 ProjectName [70193:3015307] [用户操作]确实点击了一些UI元素选项