背景
在 Linux 系统上,应用程序日志存在于 的子目录中/var/log
,该目录由root/root
我的系统拥有并拥有 755 权限。例如,我看到/var/log/mysql
和/var/log/samba
。
问题
如果我希望myapp能够写入 a /var/log/myapp
,那么在 C/C++ 中完成此操作的规范方法是什么?
想法
setuid root
如果我不想,我是否必须做一些疯狂的事情sudo a_setup_script.sh
?请注意,我知道这些syslog
例程,但它们不足以满足我的需求(我需要记录更多信息,分成不同的文件,因此需要子目录)。
我是否需要研究 Ubuntu 打包(设置目录)和将文件 IO 定向到子目录(通过myapp)的组合?
我想尽可能地遵循标准。
附录
我忘了提,myapp实际上是一个守护进程(一个监听客户端的服务器),所以拥有一个实际运行/启动进程的myapp_user并不是那么糟糕。
回答
对于 Ubuntu,最好的解决方案似乎rsyslog
是syslog
. 它将根据需要生成文件/目录,它具有用于灵活路由条目的内置语言,并且在 C/C++ 级别syslog
使用简单的旧API。syslog
要存储路由信息,您可以在 C/C++ 中定义自己的文本消息编码,并结合适当rsyslog.conf
的解码处理。