在管理系统当中,经常会遇到各种各样的错误和异常。要找到这些错误和异常,就需要各种日志来帮助定位问题了。linux的日志都是存放在/var/log这个文件夹下面,常见的日志文件有如下几种;
/var/log/cron:  记录crontab调度是否正常运行
/var/log/dmesg: 记录开始的时候内核检测过程中产生的各项信息
/var/log/lastlog:可以记录系统上面所有帐号最近一次登陆系统时的相关信息。这个文件无法用cat命令来读取,但是lastlog命令可以读取这个文件
/var/log/maillog: 记录邮件相关信息
/var/log/messages:几乎系统发生的错误信息都会记录在这个文件当中。当系统发生莫名其妙的错误时,这个文件是必须要查看的
/var/log/secure: 只要牵涉到需要输入帐号密码的软件,登陆的时候都会被记录在此文件中。例如网络联机的ssh,telnet等程序
/var/log/wtmp:记录正确登陆系统者的账户信息与错误登陆时所使用的账户信息
这里我们用lastlog来看下日志的格式:可以看到登陆用户名,使用的终端已经登陆日期。
root@zhf-linux:/var/log# lastlog | grep root
root             tty1                      Wed Jul 26 12:27:16 +0800 2017

那么什么服务的什么等级信息以及需要被记录在哪里是由谁规定的。这就要用到syslog的配置文件。有些Linux系统是记录在/etc/syslog.conf。但在ubuntun中配置文件是在/etc/rsyslog.conf。 rsyslog.conf的使用格式如下
格式::
日志设备(类型).(连接符号)日志级别   日志处理方式(action)
日志设备(可以理解为日志类型):
———————————————————————-
auth –pam产生的日志
authpriv ssh,ftp等登录信息的验证信息
cron –时间任务相关
kern –内核
lpr –打印
mail –邮件
mark(syslog)–rsyslog服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix to unix copy, unix主机之间相关的通讯
local 1~7  –自定义的日志设备
日志级别:
———————————————————————-
debug –有调式信息的,日志信息最多
info –一般信息的日志,最常用
notice –最具有重要性的普通条件的信息
warning  –警告级别
err  –错误级别,阻止某个功能或者模块不能正常工作的信息
crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert  –需要立刻修改的信息
emerg  –内核崩溃等严重信息
none –什么都不记录

举几个例子来看下:
1 如果我要将mail相关的数据都写入到/var/log/maillog中。那么在rsyslog.conf中应该添加如下
mail.info     /var/log/maillog
2 如果我要将news以及cron的信息都写入到一个称为/var/log/cronnews的文件中,但是两个程序的警告信息则额外的记录在/var/log/cronnews.warn中,则应该添加如下:
news.*;cron.*          /var/log/cronnews
news.=warn;cron.=warn    /var/log/cronnews.warn
其中.=代表所需要的等级就是后面接的等级而已,其他的不要
.!代表不等于,及是除了该等级外的其他等级都记录

有一点需要注意的是对于日志文件,如果用VIM打开它,离开却执行:wq的参数,那么该文件将来将不会在继续日志操作,除非重新启动rsyslog。 /etc/init.d/rsyslog restart

在/var/log文件中我们经常看到如下的文件。dpkg.log.1,dpkg.log.2。这些由于logrotate的原因。由于日志一直在不停的记录,文件会越来越大,那么这样会影响到系统的运行,因此logrorate就是将旧的日志文件更改名称,然后新建一个空的日志文件。然后旧的记录保存一段时间就删除掉。这样就可以省去很多硬盘空间。
-rw-r--r--  1 root              root        0 Sep  3 14:04 dpkg.log
-rw-r--r--  1 root              root   161993 Aug 27 15:14 dpkg.log.1
-rw-r--r--  1 root              root    98629 Nov 30  2015 dpkg.log.10.gz
-rw-r--r--  1 root              root   177381 Jul 30 15:26 dpkg.log.2.gz
-rw-r--r--  1 root              root    23074 Jul 26 10:16 dpkg.log.3.gz
-rw-r--r--  1 root              root      224 Oct  9  2016 dpkg.log.4.gz
-rw-r--r--  1 root              root     2861 Sep 27  2016 dpkg.log.5.gz
-rw-r--r--  1 root              root      335 Jun 14  2016 dpkg.log.6.gz
-rw-r--r--  1 root              root     1011 May 23  2016 dpkg.log.7.gz
-rw-r--r--  1 root              root      221 May  7  2016 dpkg.log.8.gz
-rw-r--r--  1 root              root     2206 Dec  1  2015 dpkg.log.9.gz
那么logrotate的工作机制是如何定义的呢,这些都记录在/etc/logrotate.conf里面
# rotate log files weekly   每周对日志进行一次rotate的动作
weekly

# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog

# keep 4 weeks worth of backlogs   只保留4个日志文件
rotate 4

# create new (empty) log files after rotating old ones
create       日志文件被重命名,因此新建一个来继续存储

# uncomment this if you want your log files compressed    被修改的日志是否需要压缩
#compress
比如针对/var/log/wtmp的文件,设置如下
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

但是现实情况是我们有很多服务都在系统上面,每个服务都需要去修改/etc/logrotate.conf文件也挺复杂的。所以需要单独独立出来一个目录,每个服务独立一个文件,并且放置到/etc/logrotate.d当中就可以了
root@zhf-linux:/etc/logrotate.d# ls -al
total 64
drwxr-xr-x   2 root root  4096 Aug 21 11:32 .
drwxr-xr-x 147 root root 12288 Sep 21 21:55 ..
-rw-r--r--   1 root root   126 May 16  2015 apport
-rw-r--r--   1 root root   173 Apr 10  2014 apt
-rw-r--r--   1 root root   181 Feb 13  2016 cups-daemon
-rw-r--r--   1 root root   232 Mar  7  2014 dpkg
-rw-r--r--   1 root root   125 Apr  1  2017 lightdm
-rw-r--r--   1 root root   157 Jul 15  2014 pm-utils
-rw-r--r--   1 root root    94 Apr 22  2015 ppp
-rw-r--r--   1 root root   515 Feb  3  2016 rsyslog
-rw-r--r--   1 root root   513 Feb 19  2014 speech-dispatcher
-rw-r--r--   1 root root   178 Aug  7  2014 ufw
-rw-r--r--   1 root root   235 Feb 19  2016 unattended-upgrades
-rw-r--r--   1 root root   122 Apr 12  2014 upstart
比如来看下rsyslog的设置。
root@zhf-linux:/etc/logrotate.d# cat rsyslog
/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        invoke-rc.d rsyslog rotate > /dev/null
    endscript
}
其中postrotate代表的意思是在做完logrotate之后启动的命令。prerotate代表的意思是在logrotate之前的命令。
比如如果我们想将/var/log/syslog文件在rotate后设置为只能为增加的属性。可以这样写
postrotate
/usr/bin/chattr +a /var/log/syslog
endscript

如果配置文件都OK了,可以用logrotate命令来测试设置是否可行。
Logrorate -vf logfile
-v: 启动显示模式,会显示logrotate运行的过程
-f:不论是否符合配置文件的数据,强制每个文件都进行rotate的操作

一起来学linux:日志文件的更多相关文章

  1. linux日志文件

    linux日志文件 在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的 ...

  2. Linux - 日志文件

    Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

  3. Linux - 日志文件简介

    Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

  4. 位于/var/log目录下的20个Linux日志文件

    位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...

  5. [转帖]Linux日志文件utmp、wtmp、lastlog、messages

    Linux日志文件utmp.wtmp.lastlog.messages https://www.cnblogs.com/zhuiluoyu/p/6874255.html 1.有关当前登录用户的信息记录 ...

  6. 常用Linux日志文件功能

    /var/log目录下的20个Linux日志文件功能详解 :   如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日 ...

  7. [转]Linux日志文件总管——logrotate

    FROM : https://linux.cn/article-4126-1.html 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文 ...

  8. /var/log目录下的20个Linux日志文件功能详解

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...

  9. Linux 日志文件utmp、wtmp、lastlog、messages

            1.有关当前登录用户的信息记录在文件utmp中:==who命令 2.登录进入和退出纪录在文件wtmp中:==w命令 3.最后一次登录文件可以用lastlog命令察看: 4.messag ...

  10. /var/log目录下的20个Linux日志文件功能详解 分类: 服务器搭建 linux内核 Raspberry Pi 2015-03-27 19:15 80人阅读 评论(0) 收藏

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...

随机推荐

  1. Your build settings specify a provisioning profile with the UUID, no provisioning profile was

    http://blog.csdn.net/rbyyyblog/article/details/12220875 在Archive项目时,出现了“Your build settings specify ...

  2. 每天学一点Python

    9月11日 1.用List实现Python里的?:条件表达式 ["false","true"][判断条件] 其实就是一个List[0]还是List[1]的问题. ...

  3. JSON API:用 JSON 构建 API 的标准指南中文版

    译文地址:https://github.com/justjavac/json-api-zh_CN 假设你和你的团队以前争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 ...

  4. 线程中的WaitForSingleObject和Event的用法

    http://chinaxyw.iteye.com/blog/548622 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent ...

  5. JAVA实现EXCEL公式专题(四)——字符串函数

    直接上代码: /** * 项目名称: * 文件说明: ExCEL公式类型:字符串公式 * 主要特点: * 版本:1.0 * 制作人:刘晨曦 * 创建时间:2013-12-3 **/ package E ...

  6. Injection of resource dependencies failed解决办法总结

    今天调试项目代码,出现的引resource的报错,查原因查了好长时间才找到,现在这里总结一下,以免以后忘掉以及给大家参考. 报错大致内容入下: org.springframework.beans.fa ...

  7. Hadoop本地调试

    windows上先调试该程序,然后再转到linux下. 程序运行的过程中, 报 Failed to locate the winutils binary in the hadoop binary pa ...

  8. 2016.7.12 Table configuration with catalog null, schema public, and table globalpage did not resolve to any tables(疑)

    在eclipse中运行mybatis的generator插件时,出现如下错误提示: Generation Warnings Occured:Table configuration with catal ...

  9. 粗略。。Java项目设计模式之笔记----studying

    设计模式 设计模式:解决这个问题的一种行之有效的思想. 设计模式:用于解决特定环境下.反复出现的特定问题的解决方式. 设计模式学习概述 ★ 为什么要学习设计模式 1.设计模式都是一些相对优秀的解决方式 ...

  10. js传递默认形参

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...