我正在安装一个自定义包/opt/package_name
,将配置文件/etc/opt/package_name
和静态文件存储在/var/opt/package_name/static/
- 所有遵循 FHS 建议的约定。[ 1 ] [ 2 ] [ 3 ]
我还需要存储一些日志文件。我希望它们可以被分析工具发现,因此它们也应该位于常规位置。这些是否应该进入:
/var/log/package_name
(就像一个系统包,即使这是一个自定义包)/var/opt/package_name/log
(遵循/var/opt
惯例 - 但这是可以发现的吗?)Mic*_*Mol 19
我会把它们放在/var/log/package_name
; 它比 更好地满足最小惊喜原则/var/opt/package_name/log
。我没有这方面的引文;它只是匹配我要查找日志的位置。
我也可能放弃编写自己的日志文件,而是syslog
使用适当的标签和工具登录;如果我正在寻找与已建立的分析工具的干净集成,我不相信我可以在通信渠道上做得更好:
syslog
。logrotate
来告诉我放开文件并打开一个新文件。我什至不必告诉logrotate
要轮换的新文件!rsyslog
如果需要,将使用现有的既定工具,因此我不必考虑自己实现该功能。除非我正在为我的日志做一些自定义的二进制格式,即便如此,我更喜欢 syslog 友好的机器可解析文本格式,如 JSON。我很难证明我自己单独的日志文件是正确的;分析工具已经syslog
像鹰一样观察。
当您遵循包配置文件的 FHS 约定时,您应该保持一致并将日志文件存储在/var/opt/package_name/log
.
FHS 指出:
并且还说
将日志文件放在下面/var/opt
并不会阻止包正常运行,因此使用它/var/log
显然违反了标准。
不清楚您所说的“这是可发现的吗?”是什么意思?由于您的自定义日志无论如何都可能由自定义工具处理,但假设通用工具旨在处理它们,它应该探索像您这样的非捆绑包的标准位置。
请注意,这syslog
是集中和调整日志记录配置的有用工具,但并不能完全解决当您必须在具有众所周知路径的纯文件中存储日志时的问题。有时存储在应用程序日志目录中的某些文件被设计为可由应用程序本身或相关程序使用其预期路径访问,例如存储进程 ID 的文件,因此syslog
不适用于它们。