[这是在系统化系统上广泛采用日记系统之前写的,并且没有涉及它。目前(晚2018)既 journald和(R)系统日志,如下所述,是在发行版比如Debian使用。在其他情况下,如果要与rsyslog一起使用,则可能必须安装rsyslog,但是与journald的集成非常简单。
我不会特别讨论关于ubuntu的日志记录,因为该主题通常是针对linux的标准化的(而且我相信我要说的大多数内容或所有内容对于任何风味* nix都是正确的,但实际上不是相信我)。除了回答这个问题,我也不会对“如何阅读日志”说太多:
是为人类可读性而编写的假设还是正确的,还是通常由其他工具进行评估和使用?
我想这取决于应用程序,但是总的来说,至少对于syslog中的内容(请参阅下文),它们应该是人类可读的。“对我有意义”是另一个问题,哈哈。但是,它们的结构也可以简化为特定目的而使用标准工具(grep,awk等)进行解析的方式。
首先,谁做自己的日志记录的应用程序和使用系统记录器的应用程序之间是有区别的。默认情况下,Apache是前者,尽管可以配置为后者(我认为大多数人会认为这是不希望的)。自己记录日志的应用程序可以使用文件的任何位置以任何方式进行记录,因此无需多说。系统记录器通常称为syslog
。
系统日志
“ Syslog”实际上是通过通常称为syslogd的守护进程实现的标准(d代表守护进程!)。当前在Linux(包括ubuntu)上使用的主要syslog守护程序是。Rsyslogd可以做很多事情,但是在大多数发行版中都是开箱即用地配置的,它模仿了传统的syslog,它将内容分类为纯文本文件。您可能会在中找到有关它的文档(请注意,也有一个,但这只是来自源包(例如和)的通知)。如果存在,则为html,但是Stack Exchange不允许嵌入本地文件链接:rsyslogd
/var/log
/usr/share/doc/rsyslog-doc-[version]
/usr/share/doc/rsyslog-[version]
NEWS
ChangeLog
file://usr/share/doc/rsyslog-doc/index.html
因此,您可以尝试复制粘贴内容。如果不存在,则可能是未安装的单独软件包的一部分。查询您的包装系统(例如apt-cache search rsyslog | grep doc
)。
该配置在中/etc/rsyslog.conf
,它具有一个手册页,man rsyslog.conf
尽管该手册页是一个很好的参考,但作为介绍可能不那么容易理解。幸运的是,股票rsyslog.conf的基础知识与传统syslog.conf的基础知识一致,为此,周围有许多介绍和教程。 以这个为例;在查看本地rsyslog.conf时,您想从中获得的是对功能和优先级的理解(“优先级”有时称为日志级别),因为它们是上述syslog标准的一部分。该标准之所以重要,是因为rsyslog实际上是通过内核来获取其东西的,而内核实现的是该标准。
关于$
rsyslog.conf中的指令,这些指令是rsyslog特定的,如果您安装了该可选doc软件包,则可以在中找到有关它们的指南rsyslog_conf_global.html
。
玩得开心...如果您对应用程序如何使用系统记录器感到好奇,请查看man logger
和man 3 syslog
。
日志旋转
旋转原木的标准方法是通过称为的工具logrotate
(有man logrotate
)。使用logrotate的规范方法是通过cron守护进程进行的,尽管不必那样做(例如,如果您倾向于每天关闭桌面,则最好在启动syslog之前在启动时执行一次,但是,显然,在挂载文件系统后rw)。
有一个很好的介绍logrotate的位置。请注意,logrotate不仅用于syslog,还可以与任何文件一起使用。基本配置文件是/etc/logrotate.conf
,但是由于配置具有“ include”指令,因此通常大多数东西都放入目录中的单个文件中/etc/logrotate.d
(这里d是目录而不是守护程序; logrotate不是守护程序)。
使用logrotate时要考虑的重要事项是,当应用程序运行时,其日志文件“旋转”(换句话说,移动)时,应用程序将如何响应。WRT(r)syslogd,它将停止写入该日志(我认为对此有安全理由)。解决该问题的通常方法是告诉syslog重新启动(并重新打开其所有文件),这就是为什么您会postrotate
在logrotate conf文件中看到一条指令,将SIGHUP发送到syslog守护程序的原因。