/opt 包应该在哪里写日志?

lof*_*ops 13 fhs logs

我正在安装一个自定义包/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如果需要,将使用现有的既定工具,因此我不必考虑自己实现该功能。
  • 日志文件周围的访问控制(POSIX 和,例如 SELinux)已经得到处理,因此我不需要过多关注特定于发行版的安全语义。

除非我正在为我的日志做一些自定义的二进制格式,即便如此,我更喜欢 syslog 友好的机器可解析文本格式,如 JSON。我很难证明我自己单独的日志文件是正确的;分析工具已经syslog像鹰一样观察。


jll*_*gre 8

当您遵循包配置文件的 FHS 约定时,您应该保持一致并将日志文件存储在/var/opt/package_name/log.

FHS 指出:

/opt中包的变量数据必须安装在/var/opt/

并且还说

除了那些必须驻留在文件系统树中特定位置才能正常运行的包文件之外,在 /opt、/var/opt 和 /etc/opt 层次结构之外不得存在其他包文件。例如,设备锁定文件必须放在 /var/lock 中,设备必须位于 /dev 中。

将日志文件放在下面/var/opt并不会阻止包正常运行,因此使用它/var/log显然违反了标准。

不清楚您所说的“这是可发现的吗?”是什么意思?由于您的自定义日志无论如何都可能由自定义工具处理,但假设通用工具旨在处理它们,它应该探索像您这样的非捆绑包的标准位置。

请注意,这syslog是集中和调整日志记录配置的有用工具,但并不能完全解决当您必须在具有众所周知路径的纯文件中存储日志时的问题。有时存储在应用程序日志目录中的某些文件被设计为可由应用程序本身或相关程序使用其预期路径访问,例如存储进程 ID 的文件,因此syslog不适用于它们。