在管理系统当中,经常会遇到各种各样的错误和异常。要找到这些错误和异常,就需要各种日志来帮助定位问题了。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. dump_stack的简单使用

    转载:http://blog.csdn.net/sanchuyayun/article/details/39183941 刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们 ...

  2. iOS博客列表

    国外 iOSDevWeekly NSHipster NSBlog objcio Raywenderlich Bignerdranch NSScreencast 需FQ Pilky.me jeremyw ...

  3. [笔记]Android 源码编译

    问题: 解决方法: 下载地址ftp://ftp.gnu.org/gnu/make/make3.8.2的安装步骤:tar -zxvf make3.8.2.tar.gz在make-3.8.2目录下./co ...

  4. WinForm 读取Excel 数据显示到窗体中

    最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... //读取Excel的帮助类 class SqExcellHelper { publi ...

  5. 使用ssh从外网访问内网

    一.场景如下: 各个角色的对应关系如下: 角色 描述 APP 个人笔记本,属于内网IP sshd server 公网 VPS ( 映射端口: port 2222 ),拥有公网IP ssh client ...

  6. 选择一个 Python Web 框架:Django vs Flask vs Pyramid

    Pyramid, Django, 和 Flask都是优秀的框架,为项目选择其中的哪一个都是伤脑筋的事.我们将会用三种框架实现相同功能的应用来更容易的对比三者.也可以直接跳到框架实战(Framework ...

  7. Andfix热修复框架原理及源代码解析-上篇

    热补丁介绍及Andfix的使用 Andfix热修复框架原理及源代码解析-上篇 Andfix热修复框架原理及源代码解析-下篇 1.不知道怎样使用的同学,建议看看我上一篇写的介绍热补丁和Andfix的使用 ...

  8. 关于insert|update|delete注入中的tips

    2.updatexml().extractvalue().name_const()函数的使用 3.I’ve noticed some variations in our payload. You ca ...

  9. Linux的经常使用命令(2) - 关机

    关机命令 shutdown‑h now 马上进行关机 shutdown‑r now 如今又一次启动计算机 -t sec : -t后面加秒数,即"过几秒后关机" -k      : ...

  10. 怎样在编译的时候,控制删除apk不用的资源?

    1.改动alps/meidatek/config/xxx/ProjectConfig.mk下的MTK_PRODUCT_LOCALS,去掉不用的资源,比方屏幕密度或语言等.  2. nodpi和mipm ...