如何实际使用`asl_set_filter`?

时间:2016-03-14 10:30:04

标签: c macos cocoa logging syslog

我徒劳地尝试使用asl_set_filter。我知道默认过滤器会阻止ASL_LEVEL_INFOASL_LEVEL_DEBUG登录syslogd。我在下面使用asl_set_filter应该删除该限制:

    aslclient _logClient = asl_open("LoggerPlayCmd", "com.apple.console", ASL_OPT_STDERR);
    asl_set_filter(_logClient, ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG));

    #define LOG(level) asl_log(_logClient, NULL, (level), "Logging entry at level %s(%d)", (#level), (level));
    LOG(ASL_LEVEL_EMERG);
    LOG(ASL_LEVEL_ALERT);
    LOG(ASL_LEVEL_CRIT);
    LOG(ASL_LEVEL_ERR);
    LOG(ASL_LEVEL_WARNING);
    LOG(ASL_LEVEL_NOTICE);
    LOG(ASL_LEVEL_INFO);
    LOG(ASL_LEVEL_DEBUG);

    asl_close(_logClient);

然而,Console.app中的输出明显不包括INFO和DEBUG行,就好像没有调用asl_set_limit一样。

 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_EMERG(0)
 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_ALERT(1)
 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_CRIT(2)
 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_ERR(3)
 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_WARNING(4)
 14/03/2016 10:13:46.407 LoggerPlayCmd[29684]: Log entry ASL_LEVEL_NOTICE(5)

我做错了什么?

微米。

0 个答案:

没有答案