【Linux基础】-- 日志系统syslog与logger的使用方法整理

系统日志配置与使用指南

一、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:日志消息的目的地,可以是文件、控制台、远程主机等。

常见配置示例

  1. 记录所有消息到 /var/log/messages 文件:

    sh 复制代码
    *.* /var/log/messages
  2. 记录内核消息到 /var/log/kern.log 文件:

    sh 复制代码
    kern.* /var/log/kern.log
  3. 记录认证相关消息到 /var/log/auth.log 文件:

    sh 复制代码
    auth.* /var/log/auth.log
  4. 记录邮件相关消息到 /var/log/mail.log 文件:

    sh 复制代码
    mail.* /var/log/mail.log
  5. 记录 cron 作业相关消息到 /var/log/cron.log 文件:

    sh 复制代码
    cron.* /var/log/cron.log
  6. 记录所有警告级别及以上的消息到控制台(虚拟终端1):

    sh 复制代码
    *.warn /dev/tty1
  7. 将重要的系统消息发送到远程主机:

    sh 复制代码
    *.crit @remote-host
  8. 忽略某些消息:忽略邮件和新闻的 debug 消息:

    sh 复制代码
    mail.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 选项指定日志消息的 facilitylevel

语法

sh 复制代码
logger -p facility.level "log message"

示例

  1. 将日志消息记录到 auth 设施中,级别为 info

    sh 复制代码
    logger -p auth.info "This is an auth info message"
  2. 将日志消息记录到 daemon 设施中,级别为 warning

    sh 复制代码
    logger -p daemon.warning "This is a daemon warning message"
  3. 将日志消息记录到 local0 设施中,级别为 notice

    sh 复制代码
    logger -p local0.notice "This is a local0 notice message"

常用 facility 类型

  • auth:认证和安全相关的消息
  • cron:定时任务相关的消息
  • daemon:系统守护进程相关的消息
  • kern:内核相关的消息
  • local0local7:本地使用的自定义消息
  • mail:邮件系统相关的消息
  • syslog:syslog 系统相关的消息
  • user:用户级消息
  • uucp:UNIX-to-UNIX Copy Program 相关的消息

常用 level 级别

  • debug:调试级别的消息
  • info:信息级别的消息
  • notice:通知级别的消息
  • warning:警告级别的消息
  • err:错误级别的消息
  • crit:严重错误级别的消息
  • alert:需要立即处理的消息
  • emerg:系统无法使用的紧急消息

完整示例

以下是一个完整的示例,展示如何使用不同的 facilitylevel 记录日志消息:

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"

通过使用这些选项,您可以灵活地将日志消息发送到适当的设施和级别,以便更好地分类和管理系统日志。

相关推荐
小猪佩奇QWQ1 分钟前
第1章 firewalld防火墙
linux·网络
不会倒的鸡蛋4 分钟前
Linux 操作系统详解
linux·ubuntu
技术很渣5 分钟前
高级运维工程师讲述银河麒麟V10SP1服务器加固删除snmp服务引起keeplived莫名连带删除引起生产事故实战
运维·服务器·kylin
月清晖1 小时前
centos更换yum源、安装Docker和换源
linux·docker·centos
【 教主 】1 小时前
<Linux> 多线程
linux·运维·服务器
GY35091 小时前
AC7801时钟配置流程
单片机·嵌入式硬件·车载系统·车载mcu·系统时钟
LaoZhangGong1231 小时前
51单片机第22步_interrupt和using关键字
单片机·嵌入式硬件·51单片机
LaoZhangGong1231 小时前
51单片机第27步_单片机工作在睡眠模式
单片机·嵌入式硬件·51单片机
如图所示z1 小时前
单片机IO
单片机·嵌入式硬件
技术探索者1 小时前
Shell:如何判断两个字符串相等
linux·shell