我的应用会像这样创建其日志文件
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
我会将它部署到其他机器上。 我的应用程序是否有权在任何其他计算机上创建其日志文件?
答案 0 :(得分:1)
如果您的程序以root身份运行(显然没有,从“权限被拒绝”错误判断),/Library/Logs
或~/Library/Logs
是合适的。
如果您的程序以普通用户身份运行,则/var/log/apache2
是合适的。
最好创建一个以程序命名的子目录(在最终使用的任何日志目录中),并在子目录中写入日志。例如,macOS上的Apache默认将其日志写入~/Library/Logs/com.apple.Notes
; Notes应用程序将其日志写入/var/log
。
如果您的程序作为系统帐户运行(不是root用户而不是普通用户帐户),那么您的安装程序可能会在/Library/Logs
或chown
下以root身份创建log子目录,然后{{1它到该系统帐户,使其可由您的程序写入。