Mac OS X:app可以在哪里创建日志文件?

时间:2018-03-07 06:37:51

标签: c++ macos

我的应用会像这样创建其日志文件

FILE *ftemp = NULL;
ftemp=fopen("/var/log/x.log", "ab+");
if(ftemp) 
{
    fprintf(stderr, "ftemp: log created\n");
}
else
{
    fprintf(stderr, "ftemp: log error:%s\n", strerror(errno));
}

输出结果为:

ftemp: log error:Permission denied

我会将它部署到其他机器上。 我的应用程序是否有权在任何其他计算机上创建其日志文件?

1 个答案:

答案 0 :(得分:1)

如果您的程序以root身份运行(显然没有,从“权限被拒绝”错误判断),/Library/Logs~/Library/Logs是合适的。

如果您的程序以普通用户身份运行,则/var/log/apache2是合适的。

最好创建一个以程序命名的子目录(在最终使用的任何日志目录中),并在子目录中写入日志。例如,macOS上的Apache默认将其日志写入~/Library/Logs/com.apple.Notes; Notes应用程序将其日志写入/var/log

如果您的程序作为系统帐户运行(不是root用户而不是普通用户帐户),那么您的安装程序可能会在/Library/Logschown下以root身份创建log子目录,然后{{1它到该系统帐户,使其可由您的程序写入。