Linux的日志服务---syslog&logrotate

一、概述

在标准的Linux系统上,守护进程klogd从记录3缓冲区中获取内核的信息,再通过syslogd守护进程将它们保存在系统的日志文件中。klogd程序既可以从/proc/kmsg文件中,也可以通过syslog()系统调用来读取这些消息。默认情况下,它选择读取/proc方式实现。不管哪种方式,klogd都会阻塞,直到有新的内核消息可读。在被唤醒后,它会读取新的内核消息并进行处理。默认情况下,它就是把消息传给syslogd守护进程。syslogd守护进程把它接收到的所有消息添加到一个文件中,该文件默认是/var/log/message。也可以通过/etc/syslog.conf配置文件重新指定。

二、应用

syslog在系统开发和维护中,为我们追踪问题提供了有效的帮助,对syslog进行分级分类更能帮助我们准确的定位问题。我们可以通过修改/etc/syslog.conf来对log分类。Linux通过定义Facility和Severity来分类。

Facility:有0-23种设备可选

0 kernel messages             系统内核消息
1 user-level messages       用户空间消息
2 mail system                     内部邮件服务器相关的消息
3 system daemons             系统守护进程消息
4 security/authorization messages (auth)            身份验证相关的消息
5 messages generated internally by syslogd     syslogd自己内部消息
6 line printer subsystem                                     
7 network news subsystem                              网络消息
8 UUCP subsystem
9 clock daemon
10 security/authorization messages (authpriv)
11 FTP daemon
12 NTP subsystem
13 log audit                            需要启动auditd服务
14 log alert
15 clock daemon
16-23     local0 - local7         用户自定义的消息通道

Severity:日志等级

0 Emergency
1 Alert
2 Critical
3 Error
4 Warning
5 Notice
6 Informational
7 Debug

这些都定义在内核中:

#define LOGLEVEL_EMERG  0 /* system is unusable */
#define LOGLEVEL_ALERT  1 /* action must be taken immediately */
#define LOGLEVEL_CRIT  2 /* critical conditions */
#define LOGLEVEL_ERR  3 /* error conditions */
#define LOGLEVEL_WARNING 4 /* warning conditions */
#define LOGLEVEL_NOTICE  5 /* normal but significant condition */
#define LOGLEVEL_INFO  6 /* informational */
#define LOGLEVEL_DEBUG 7 /* debug-level messages */

我们知道了解Facility和Severity, 那么如何修改syslog.conf呢?

syslog.conf文件行的基本语法是这样的:

[消息的类型(Facility)].[日志的等级(Severity)]     [存放目标日志文件]。

如下语句加入syslog.conf,意思是将authpriv类型的所有等级日志消息存入 /var/log/secure中。
authpriv.*                                              /var/log/secure

当然syslog支持action将消息内容重定向到设备文件中。如下语句是将kernal类型info等级的消息重定向到/dev/logs.

kern.info action(type="ompipe" pipe="/dev/logs")

配置好了,记得使用service syslog restart 去重启服务,使配置生效。

三、logrotate--log管家

syslog的使用就说到这里,但是大家一定发现了问题,对的,如果系统消息无止境的写入到log文件中,系统硬盘空间很快就会被耗尽。这时,我们引入了logrotate这个十分有用的工具,它可以自动对日志进行截断、压缩以及删除旧的日志文件。首先我们对logrotate进行配置,以上文的/var/log/secure为例。修改/etc/logrotate.conf如下:

var/log/secure
{
    maxsize 10240000         #日志文件到达最大限度10M时将截断
    compress                 #已截断的文件将使用gzip进行压缩
    maxage 365               #文件最长保存365天
    rotate 20                #一次性可以存储20个文件,第21个文件,时间最久的文件将被删除。
    missingok                #在截断期间,任何错误将被忽略
    notifempty               #如果日志文件为空,将不会截断
    create 640 root root     #给创建的日志赋予指定的权限
    postrotate
         systemctl reload syslog.service > /dev/null            #所有的指令完成后,将执行脚本重启syslog服务
    endscript
}

这样我们就完成了对日志文件的基本管理。

原文地址:https://www.cnblogs.com/liquan2005/p/9085177.html

时间: 2024-10-16 20:15:40

Linux的日志服务---syslog&logrotate的相关文章

CENTOS6.2系统日志rsyslog替换默认的日志服务syslog 转载自http://www.phpboy.net/linux/648.html

最近遇到配置centos 6.2的sshd及sftp日志,发现/etc/syslog.conf文件不存在,然后: #rpm -qa | grep syslog 出来的是rsyslog-5.8.10-6.el6.x86_64 然后: #cat /etc/rsyslog.conf 出来的内容几乎和以前的/etc/syslog.conf类似,然后百度,Google得出的结论是: Rsyslog可作为系统自带产品syslog的替代品,目前fedra等多种Unix/Linux系列操作系统已经正式将rsys

linux下日志管理工具--logrotate

配置 /usr/local/nginx/logs/*.log { daily dateext rotate 1 olddir /usr/local/nginx/other/logs missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null ||: endscript } dateext:文件后缀是日期格式,也就是

Linux的日志文件管理工具——logrotate(linux日志切割与轮循)

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事. Linux日志切割 现代的Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作.logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝.

linux命令:syslog日志服务-系统缩减之增加日志服务功能

syslog 服务:     syslogd:系统日志服务,非内核产生的信息     klogd:内核日志服务,专门负责记录内核产生的日志信息   service syslog restart 重启日志服务   service syslog reload  不重启日志服务使得日志服务配置文件立即生效 配置文件:/etc/syslog.conf 配置文件格式:facility.priority action  #facility谁产生的日志,priority所产生的那   种   级别的日志,ac

Linux下日志系统详解

Linux下日志系统详 1.linux系统上有两个日志服务syslog和syslog-ng syslog服务有两个进程syslogd和klogd syslogd: 系统产生的日志信息 klogd:内核产生的日志信息 klogd:在系统启动时内核产生日志输出至物理终端(/dev/console)并存放至/var/log/dmesg文件中 查看klogd产生的日志信息可通过 dmesg 和 cat /var/log/dmesg 命令查看 syslogd:在系统启动后,由各子系统产生日志并存放至 /v

Linux日志系统syslog

实验环境:RHEL5.8 32Bit Linux日志系统syslog详解 ·日志系统 我们的操作系统在运行的过程当种会产生很多的信息,这些信息既是我们观察系统运行过程当中正常状况的一种途径,也为我们提供了当系统发生故障的时候定位问题所在的必要信息,因此Linux系统的日志,就相当于我们的航海日志,事实上任何一个操作系统都提供了一个强大的日志系统用于记录各子系统运行过程当中所产生的各种信息. ·信息的详细程度 根据系统中产生的日志信息的详细程度的不同,我们可以将系统中产生的不同的日志信息分为不同的

【Linux笔记】如何利用logrotate工具自动切分滚动中的日志文件

在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长到G级别.单机操作大文件对后续跟进日志来说非常不方便. 本文介绍如何利用logrotate这个工具来在应用程序外部切分日志. 1. logrotate是什么 logrotate是大多数linux系统自带的日志切割工具,在shell终端输入"man logrotate"可查看其简介(部分摘出如下): logrotate is designed to

Linux01-Linux日志系统syslog详解55

一.日志系统 1.日志系统:syslog() 信息详细程序:日志级别 日志子系统:facility 日志记录动作:Action Linux上的日志系统: syslog syslog-ng: syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能 系统启动过程的日志: kernel --> 物理终端(/dev/console) --> /var/log/dmesg 查看日志命令: dmesg /var/log/dmesg cat /va

Rsyslog日志服务安装配置

rsyslog服务端配置  centos6.4 x64系统  系统自带rsyslog 5.8版本 rsyslog 是一个 syslogd 的多线程增强版. 现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了 rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件 ################################### #首先部署好lamp环境,详情见lamp安装文档 #更新系统时间   rsyslog-mysql是rs