系统日志配置与使用指南
一、syslog 的使用
syslog
是一种标准用于记录程序运行日志信息的协议。以下是一些基本使用方法:
检查 syslogd
进程
确保 syslogd
进程正在运行。可以通过以下命令检查:
sh
ps | grep syslogd
如果没有看到 syslogd
进程在运行,可以尝试启动它:
sh
/etc/init.d/syslog start
或者在某些系统上:
sh
/etc/init.d/log restart
日志目录权限
确保日志目录存在并且具有正确的权限。例如,如果日志存储在 /var/log
目录下,确保该目录存在并且具有写入权限:
sh
mkdir -p /var/log
chmod 755 /var/log
二、syslog.conf 的编写
syslog.conf
文件用于配置 syslogd
服务,以定义系统日志消息的记录方式和存储位置。
基本格式
每一行的格式如下:
sh
facility.level destination
facility
:日志设施,表示消息的来源(例如auth
,cron
,daemon
,kern
,user
,mail
等)。level
:日志级别,表示消息的重要性(例如debug
,info
,notice
,warning
,err
,crit
,alert
,emerg
)。destination
:日志消息的目的地,可以是文件、控制台、远程主机等。
常见配置示例
-
记录所有消息到
/var/log/messages
文件:sh*.* /var/log/messages
-
记录内核消息到
/var/log/kern.log
文件:shkern.* /var/log/kern.log
-
记录认证相关消息到
/var/log/auth.log
文件:shauth.* /var/log/auth.log
-
记录邮件相关消息到
/var/log/mail.log
文件:shmail.* /var/log/mail.log
-
记录 cron 作业相关消息到
/var/log/cron.log
文件:shcron.* /var/log/cron.log
-
记录所有警告级别及以上的消息到控制台(虚拟终端1):
sh*.warn /dev/tty1
-
将重要的系统消息发送到远程主机:
sh*.crit @remote-host
-
忽略某些消息:忽略邮件和新闻的 debug 消息:
shmail.none;news.none /var/log/messages
示例配置文件
以下是一个示例 syslog.conf
文件的完整配置:
sh
# Log all kernel messages to the console.
kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/auth.log
# Log all the mail messages in one place.
mail.* /var/log/mail.log
# Log cron stuff.
cron.* /var/log/cron.log
# Everybody gets emergency messages.
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
配置生效
修改 syslog.conf
文件后,需重新启动 syslogd
服务以使配置生效:
sh
/etc/init.d/syslog restart
三、logger 的使用方式
logger
命令是一个用于从命令行发送日志消息到 syslog
的工具。可以通过 -p
选项指定日志消息的 facility
和 level
。
语法
sh
logger -p facility.level "log message"
示例
-
将日志消息记录到
auth
设施中,级别为info
:shlogger -p auth.info "This is an auth info message"
-
将日志消息记录到
daemon
设施中,级别为warning
:shlogger -p daemon.warning "This is a daemon warning message"
-
将日志消息记录到
local0
设施中,级别为notice
:shlogger -p local0.notice "This is a local0 notice message"
常用 facility
类型
auth
:认证和安全相关的消息cron
:定时任务相关的消息daemon
:系统守护进程相关的消息kern
:内核相关的消息local0
到local7
:本地使用的自定义消息mail
:邮件系统相关的消息syslog
:syslog 系统相关的消息user
:用户级消息uucp
:UNIX-to-UNIX Copy Program 相关的消息
常用 level
级别
debug
:调试级别的消息info
:信息级别的消息notice
:通知级别的消息warning
:警告级别的消息err
:错误级别的消息crit
:严重错误级别的消息alert
:需要立即处理的消息emerg
:系统无法使用的紧急消息
完整示例
以下是一个完整的示例,展示如何使用不同的 facility
和 level
记录日志消息:
sh
logger -p auth.info "User login successful"
logger -p daemon.warning "Service is using high memory"
logger -p local0.notice "Custom application notice message"
通过使用这些选项,您可以灵活地将日志消息发送到适当的设施和级别,以便更好地分类和管理系统日志。