gpt4 book ai didi

macos - 如何在 Swift 中使用 `syslog`

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:34 25 4
gpt4 key购买 nike

看起来 syslog() 函数在 Swift 2 中不可用。

如何在 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()相反。

关于macos - 如何在 Swift 中使用 `syslog`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com