博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux学习记录--日志系统
阅读量:4212 次
发布时间:2019-05-26

本文共 4620 字,大约阅读时间需要 15 分钟。

日志系统

日志系统对于一个系统来说是非常重要的,从日志文件我们可以获取到系统的运行状况,协助我们排查问题。

对于CentOs来说,日志系统主要包含2个服务与1个程序

syslogd:记录系统与网络服务的信息

klogd:记录内核产生的各项信息

logrotate:日志文件的轮替功能

说明:不同的UNIX LIKE对应的服务可能不一样

 

 

syslogd服务

syslogd服务配置文件分析

[root@localhost ~]# cat /etc/syslog.conf #kern.*                                                 /dev/console*.info;mail.none;news.none;authpriv.none;cron.none              /var/log/messagesauthpriv.*                                              /var/log/securemail.*                                                  -/var/log/maillog# Log cron stuffcron.*                                                  /var/log/cron*.emerg                                                 *uucp,news.crit                                          /var/log/spoolerlocal7.*                                                /var/log/boot.lognews.=crit                                        /var/log/news/news.critnews.=err                                         /var/log/news/news.errnews.notice                                       /var/log/news/news.notice

配置文件格式如下

【服务类型】 【信息等级设置】【信息存储方式】

以cron.*  /var/log/cron 为例

cron是服务类型

. 是信息等级设置

/var/log/cron 信息存储方式

 

服务类别

服务类别

说明

auth (authpriv)

主要与认证有关的机制

cron

就是例行性工作cron/at 等产生信息记录的地方;

daemon

与各个 daemon(服务进程) 有关的信息;

kern

内核核 (kernel) 产生信息的地方

lpr

与打印相关的信息

mail

与邮件相关的信息

news

与新闻组相关的信息

syslog

syslogd程序本身产生的信息

user, uucp, local0 ~ local7

与 Unix like 机器本身有关的一些信息。

 

日志信息等级

等级

等级名称

说明

1

info

仅是一些基本的信息说明而已;

2

notice

需要注意的信息;

3

warning

(warn)

警示的信息, info, notice, warn 这三个信息都是在告知一些基本信息而已,应该还不至于造成一些系统运行困扰;

4

err

(error)

一些重大的错误信息

5

crit

比 error 还要严重的错误

6

alert

警告警告,已经很有问题的等级,比 crit 还要严重

7

emerg

(panic)

疼痛等级,意指系统已经几乎要死机的状态

 

Ø  . :代表比后面还要高的等级 (含该等级) 都被记录下来的意思。如mail .info

Ø  .=:代表所需要的等级就是后面接的等级而已

Ø  .!:代表不等于,除了该等级外的其他等级都记录。

Ø  .*:代表说所有等级的信息都记录

 

日志文件的轮替(logrotate)

日志文件随着时间会变得越来越多,此时就需要进行日志文件轮替。以控制日志文件规模.logrotate就是做这个用的

 

日志轮替程序配置文件包括

/etc/logrotate.conf :记录整体轮替配置信息

/etc/logrotate.d/*  : 记录各个服务类型的轮替配置信息

 

其实可以在/etc/logrotate.conf中定义配置各种服务类型的日志轮替配置信息,为了方便管理将每个服务类型的日志轮替配置信息形成独立文件存储在/etc/logrotate.d/*

[root@localhost logrotate.d]# ll-rw-r--r-- 1 root root  144 2012-02-23 acpid-rw-r--r-- 1 root root  288 2007-11-12 conman…….-rw-r--r-- 1 root root  100 10-02 06:17 wpa_supplicant-rw-r--r-- 1 root root  100 2012-07-26 yum

logrotate的配置文件

[root@localhost ~]# vim /etc/logrotate.conf=>下面为默认值。如不单独配置将才有下面的默认值weekly    <==默认每周进行一次 rotate 的工作rotate 4  <==默认保留4个登录文件 create    <==以新创建文件继续存储日志文件#compress <==被更动的登录文件是否需要压缩?如果登录文件太大则可考虑此参数启动include /etc/logrotate.d/var/log/wtmp {       <==仅针对 /var/log/wtmp 所配置的参数    monthly           <==每个月一次,取代每周!    minsize 1M        <==文件容量一定要超过 1M 后才进行    create 0664 root utmp <==指定新建文件的权限与所属帐号/群组    rotate 1          <==仅保留一个 }

日志轮替规则

当第一次执行轮替,原本日志文件msg 被重命名为msg1,同时创建新的msg以记录新的日志信息,当的当第二次执行轮替,日志文件msg1 被重命名为msg2, msg重命名为msg1,同时创建新的msg以记录新的日志信息,依次类推,日志文件最多保存的数量为rotate这个属性所指定的数值

                                                      

 

日志轮替文件语法

正如前面看到的。日志轮替方式是写在配置文件中的,这里只做简单的说明

[root@localhost logrotate.d]# cat named/var/log/named.log {    missingokcreate 0644 named namedsharedscripts    postrotate         /sbin/service named reload  2> /dev/null > /dev/null || true    endscript}

如上前面文件。Logrotate轮替信息可以分为2部分

1.       内部参数

2.       引用外部执行

 

引用外部命令来进行额外的命令下达,这个配置需与 sharedscripts .... endscript 配置合用才行。至于可用的环境为:

prerotate:在启动 logrotate 之前进行的命令

postrotate:在做完 logrotate 之后启动的命令

 

 

内部参数 

compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~

size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及K (sizek)或者M (sizem).

 

执行日志轮替

语法:logrotate [-vf] logfile

选项与参数:

-v:显示运行过程

-f:不论是否符合配置文件的数据,强制每个日志文件都进行轮替操作

举例

[root@localhost /]# logrotate -vf /etc/logrotate.conf………………..[root@localhost /]# ll /var/log/messages*-rw------- 1 root root      50 03-28 14:00 /var/log/messages-rw------- 1 root root      50 03-28 14:00 /var/log/messages.1-rw------- 1 root root      50 03-28 13:59 /var/log/messages.2-rw------- 1 root root  333879 03-28 10:44 /var/log/messages.3-rw------- 1 root root 1289326 03-25 08:50 /var/log/messages.4

转载地址:http://cdumi.baihongyu.com/

你可能感兴趣的文章
StringBuffer与StringBuilder浅析
查看>>
BoneCP数据源记录SQl比hibernate的show sql好用
查看>>
对Cookie的一点认识
查看>>
说一说hibernate的Get和Load
查看>>
如何修改tomcat的server信息增加服务器的安全
查看>>
浅谈tomcat的ThreadLocalLeakPreventionListener实现原理
查看>>
说一下多线程中用到的join
查看>>
扩展hibernate Criteria的Order使其支持sql片段(oracle)
查看>>
spring+mybatis利用interceptor(plugin)实现数据库读写分离
查看>>
NIO[SelectableChannel.register和Selector.select会有锁等待冲突]
查看>>
httpclient3.1的relaseConnection的misunderstand
查看>>
ReentrantLock为啥会出现不公平的场景
查看>>
图解LinkedHashMap的LRU
查看>>
关于select()方法最大轮询数限制的更正
查看>>
话说Connect reset异常
查看>>
Netty笔记:FrameDecoder
查看>>
spring使用注解暴露remoting服务
查看>>
Nio框架需要注意的两个问题(2)
查看>>
Netty笔记:ReplayingDecoder中buffer使用的一点小陷阱
查看>>
Java并发编程JUC源码学习之ThreadPoolExecutor
查看>>