系统日志配置与使用指南
一、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"
通过使用这些选项,您可以灵活地将日志消息发送到适当的设施和级别,以便更好地分类和管理系统日志。