LINUX日志文件

时间:2019-04-29 03:17:36  来源:igfitidea点击:

Linux的日志文件

所有Linux系统都会生成系统日志,可以对其进行检查以查找有关正在运行的系统的信息。这些日志文件可以包含大量信息,从简单的信息消息到关键的系统问题。创建的大多数日志文件都是纯文本格式。

按照约定,大多数创建的日志文件位于目录/ var / log /下。这是系统消息和已记录/记录的标准区域。根据您使用的Linux发行版,您可能会有一个消息文件或一个syslog文件,其中包含最近的活动。日志文件通常由syslogdrsyslogd日志记录恶魔创建。这些恶魔具有很高的可配置性,可以将消息过滤到指定的文件中。除了处理本地事件外,还可以将消息记录到专用于接收此类消息的远程服务器。在大型组织中,拥有专用的syslog服务器是很常见的。稍后将介绍一些基本配置选项。

以下是一些较常见的日志文件的列表。其中一些是特定于发行版的:

日志文件描述
/var/log/messages全局系统消息记录在这里。(某些系统上的默认日志记录区域)
/var/log/syslog全局系统消息记录在此处。(某些系统上的默认日志记录区域)
/var/log/auth.log系统授权信息,包括用户登录信息
/var/log/kern.log内核消息记录在这里
/var/log/mail.log包含来自邮件服务器的日志记录信息
/var/log/boot.log系统启动消息记录在这里
/var/log/cups.log打印机相关的消息记录在这里
/var/log/wtmp包含与登录到系统的用户有关的信息
/var/log/sambasmbd和nmbd的Samba日志文件。如果配置,则可以包含用户的特定日志文件。
/var/log/dpkg.log包含来自使用dpkg安装或删除软件包的安装的信息
/var/log/zypper.log包含来自zypper软件包管理器工具的消息
/var/log/apt包含来自使用APT的程序包更新的信息
/var/log/dmesg包含内核环形缓冲区消息

syslogdrsyslogd守护程序处理系统上的大多数日志。

rsyslogd

Rsyslogd是syslogd服务的可靠扩展版本。为了清晰起见,Linux使用rsyslogd作为它的机制来记录中心区域中的日志文件,或者将日志文件分割到单独的目录中。还可以将信息发送到专用的日志服务器。多个进程可以写入同一区域而不会导致文件锁定。简单的命令可以直接从脚本中写入这个区域。

配置文件

rsyslogd在系统上的行为取决于它的配置。这个文件通常位于/etc/rsyslog.conf中。此文件包含描述记录消息时应该如何处理消息的文本。在这里,您可以为特定的消息类型指定特定的目录。默认的日志记录规则通常位于/etc/rsyslog.d/之下。

Ubuntu下rsyslog .conf的例子

/etc/rsyslog.conf

#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

#井号用于表示一个注释或注释掉一个不需要的函数。
注意最后一行$IncludeConfig /etc/rsyslog.d/*.conf.这是我们可以指定自定义规则/映射的地方。

#  Default rules for rsyslog.
#
#			For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
#daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
#lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
#user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info			-/var/log/mail.info
#mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

#
# Logging for INN news system.
#
news.crit			/var/log/news/news.crit
news.err			/var/log/news/news.err
news.notice			-/var/log/news/news.notice

#
# Some "catch-all" log files.
#
#*.=debug;\
#	auth,authpriv.none;\
#	news.none;mail.none	-/var/log/debug
#*.=info;*.=notice;*.=warn;\
#	auth,authpriv.none;\
#	cron,daemon.none;\
#	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                                :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#	news.=crit;news.=err;news.=notice;\
#	*.=debug;*.=info;\
#	*.=notice;*.=warn	/dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
	news.err;\
	*.=debug;*.=info;\
	*.=notice;*.=warn	|/dev/xconsole

默认的日志记录区域称为syslog

*.*;auth,authpriv.none -/var/log/syslog

什么是Facilities 和Levels?

每当rsyslogd守护进程接收到一条日志消息时,它都会根据消息类型(功能)和级别(优先级)进行操作。这些映射可以在/etc/syslog.conf或者/etc/syslog.d/*.conf文件中看到。

配置文件中的每个条目都可以指定一个或多个功能/级别选择器,然后是一个操作。选择器由一个或多个设施和一个操作组成。动作通常是接收消息的目录和文件的名称。

facility.level action
例如: mail.* -/var/log/mail
mail 是facility, level是星号表示全部, action是/var/log/mail

Facility

Facility代表讯息的创建者,这些设施通常包括:

auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, local0 - local7, "*"

level(优先级)

级别指定严重性阈值。这些可以是:(优先级最低的优先)

debug, info, notice, warning, err, crit, alert, emerg.

Actions

action 部分是消息的目的地。该操作可以是文件名,如/var/log/syslog,也可以是前缀为@的主机名或IP地址。后一种选择在大型组织和企业中很流行。通常,与安全相关的消息可能被发送到中央日志服务器以进行进一步检查。

rsyslog.conf结构

由于rsyslogd是syslogd的增强版本,它可以处理称为sysklogd的旧式旧样式构造。它还处理旧版的rsyslog。但是,当您使用所谓的RainerScript时,rsyslog的真正功能就会发挥作用。这是rsyslog的新样式格式,可以轻松处理复杂的情况。

来自/ openSUSE的/etc/rsyslog.conf的示例部分

#
# NetworkManager into separate file and stop their further processing
#
if      ($programname == 'NetworkManager') or \
        ($programname startswith 'nm-') \
then    -/var/log/NetworkManager
&       ~


#
# email-messages
#
mail.*                                  -/var/log/mail
mail.info                               -/var/log/mail.info
mail.warning                            -/var/log/mail.warn
mail.err                                 /var/log/mail.err


#
# news-messages
#
news.crit                               -/var/log/news/news.crit
news.err                                -/var/log/news/news.err
news.notice                             -/var/log/news/news.notice

使用logger命令进行消息测试

logger是syslog模块的shell命令界面。Logger允许您直接在系统日志中输入条目。

在其最简单的形式,我们可以执行日志I am a test。然后该消息将转到我们的默认区域(可能是/var/log/syslog或/var/log/messages),这取决于您如何配置您的规则。您还可以使用-p或——priority选项指定优先级。

john@john-desktop:/var/log$ logger "I am a Test of logger"

Mar 22 22:39:51 john-desktop kernel: [ 9588.319477] dev_remove_pack: edad0884 not found.
Mar 22 22:45:01 john-desktop CRON[4087]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Mar 22 22:47:31 john-desktop john: I am a Test of logger

基本的Logger使用说明

Usage:
 logger [options] [message]

Options:
 -d, --udp             use UDP (TCP is default)
 -i, --id              log the process ID too
 -f, --file <file>     log the contents of this file
 -h, --help            display this help text and exit
 -n, --server <name>   write to this remote syslog server
 -P, --port <number>   use this UDP port
 -p, --priority <prio> mark given message with this priority
 -s, --stderr          output message to standard error as well
 -t, --tag <tag>       mark every line with this tag
 -u, --socket <socket> write to this Unix socket
 -V, --version         output version information and exit

dmesg

dmesg是代表显示消息的特殊命令。dmesg将显示内核的消息缓冲区。如果要在引导过程中快速查看从屏幕飞过的消息,dmesg非常有用。另一个有用的技巧是将dmesg命令的输出重定向到一个临时文件:dmesg> /tmp/temp.txt。