【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"

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

相关推荐
Flag- L27 分钟前
STM32标准库-TIM定时器
stm32·单片机·嵌入式硬件
2301_775602381 小时前
STM32什么是寄存器
stm32·单片机·嵌入式硬件
apocelipes2 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
ABB自动化2 小时前
for AC500 PLCs 3ADR025003M9903的安全说明
服务器·安全·机器人
努力学习的小廉2 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
秃头菜狗3 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
利刃大大3 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
2301_793102493 小时前
Linux——MySql数据库
linux·数据库
国科安芯3 小时前
抗辐照MCU在卫星载荷电机控制器中的实践探索
网络·嵌入式硬件·硬件工程·智能硬件·空间计算
vfvfb3 小时前
bat批量去掉本文件夹中的文件扩展名
服务器·windows·批处理·删除扩展名·bat技巧