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


13

我正在将自定义包安装到/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惯例-但这是可以发现的吗?)
  • 还有什么吗

您是否牢记扫描/ var / log的分析工具示例?
sourcejedi

5
为什么答案不是syslog?
约书亚

Answers:


19

我把它们放进去/var/log/package_name;它满足最小惊奇原则胜于满足/var/opt/package_name/log。我对此没有引文。它只与我要查找日志的位置匹配。

我可能也放弃编写自己的日志文件,而是syslog使用适当的标记和功能登录;如果我要与已建立的分析工具进行干净的集成,那么我认为我在沟通渠道方面做得更好:

  • 每个带有“日志分析”作为列出功能的通用工具都已经开始监视syslog
  • 日志文件的发布和轮换语义已为我处理;我不必建立一种机制logrotate来告诉我放开文件并打开一个新文件。我什至不必讲述logrotate要旋转的新文件!
  • 如果站点需要,可以将日志卸载到中央日志服务器。rsyslog如有需要,将使用现有的现有工具,因此我不必自己考虑实现该功能。
  • 日志文件周围的访问控制(POSIX和例如SELinux)已得到处理,因此我不需要过多关注特定于发行版的安全语义。

除非我为日志做某种自定义二进制格式,否则即使如此,我还是更喜欢syslog友好的机器可解析文本格式,例如JSON。我很难证明自己的独立日志文件;分析工具已经syslog像鹰一样守势。


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不适用于它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.