看起来在
Swift 2中没有syslog()函数.
如何在OS X上向syslog发送消息?
最佳答案 问题是
void syslog(int priority, const char *message, ...);
采用变量参数列表,不会导入Swift.您可以
使用
void vsyslog(int priority, const char *message, va_list args);
相反,在Swift中定义一个包装器函数:
func syslog(priority : Int32, _ message : String, _ args : CVarArgType...) {
withVaList(args) { vsyslog(priority, message, $0) }
}
syslog(LOG_ERR, "i=%ld, x=%f", 123, 34.56)
请注意,字符串参数必须作为C字符串传递:
syslog(LOG_ERR, "status=%s", "OK".cStringUsingEncoding(NSUTF8StringEncoding))
或者,使用NSLog()写入系统日志:
NSLog("i=%ld, x=%f, status=%@", 123, 34.56, "OK")
另请注意,在OS X上,syslog()只是一个包装器
“Apple System Logger facility”.你可以打电话
asl_XXX直接起作用,你只需要#include< asl.h>
在桥接头文件中.如上所述,asl_log()不是
导入到Swift,你必须调用asl_vlog().