答案1
我会把它们放在/var/log/package_name
;它比 更好地满足最小意外原则/var/opt/package_name/log
。我没有对此的引用;它只是匹配我寻找日志的位置。
我也可能放弃编写自己的日志文件,而是syslog
使用适当的标签和设施进行日志记录;如果我正在寻找与已建立的分析工具的干净集成,我不相信我可以在通信渠道方面做得更好:
- 每个将“日志分析”列为功能的通用工具都已经在关注
syslog
。 - 日志文件释放和轮换语义由我处理;我不必建立一种机制来
logrotate
告诉我放弃该文件并打开一个新文件。我什至不必告诉logrotate
要轮换的新文件! - 如果站点需要,我可以将日志卸载到中央日志服务器;如果需要的话,现有的已建立的工具
rsyslog
将被使用,所以我不必考虑自己实现该功能。 - 围绕日志文件的访问控制(POSIX 和 SELinux)已经得到处理,因此我不需要过多关注特定于发行版的安全语义。
除非我为我的日志做一些自定义的二进制格式,即使如此,我还是更喜欢系统日志友好的机器可解析文本格式,例如 JSON。我很难证明我自己的单独日志文件的合理性;分析工具已经syslog
像鹰一样观察着。
答案2
由于您的包配置文件遵循 FHS 约定,因此您应该保持一致并将日志文件存储在/var/opt/package_name/log
.
FHS 规定:
还指出
将日志文件放在下面/var/opt
并不会阻止包正常运行,因此使用它/var/log
显然违反了标准。
目前还不清楚你所说的“这是可以发现的吗?”是什么意思?因为您的自定义日志可能无论如何都会由自定义工具处理,但假设通用工具旨在处理它们,那么它应该探索像您这样的非捆绑包的标准位置。
请注意,这syslog
是一个有用的工具,可以集中和调整日志记录配置,但当您必须在具有已知路径的纯文件中执行日志操作时,它并不能完全解决在何处存储日志的问题。有时存储在应用程序日志目录中的某些文件被设计为可由应用程序本身或关联程序使用其预期路径进行访问,例如存储进程 ID 的文件,因此syslog
不适用于它们。