Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。

大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。

Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件通常都保存在“/var/log”目录下。

日志类型

下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:

类型

说明

auth

用户认证时产生的日志,如login命令、su命令。

authpriv

与 auth 类似,但是只能被特定用户查看。

console

针对系统控制台的消息。

cron

系统定期执行计划任务时产生的日志。

daemon

某些守护进程产生的日志。

ftp

FTP服务。

kern

系统内核消息。

local0.local7

由自定义程序使用。

lpr

与打印机活动有关。

mail

邮件日志。

mark

产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发生故障的大概时间。

news

网络新闻传输协议(nntp)产生的消息。

ntp

网络时间协议(ntp)产生的消息。

user

用户进程。

uucp

UUCP子系统。

日志优先级

常见的日志优先级请见下标:

优先级

说明

emerg

紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。

alert

需要立即修复,例如系统数据库损坏。

crit

危险情况,例如硬盘错误,可能会阻碍程序的部分功能。

err

一般错误消息。

warning

警告。

notice

不是错误,但是可能需要处理。

info

通用性消息,一般用来提供有用信息。

debug

调试程序产生的信息。

none

没有优先级,不记录任何日志消息。

常见日志文件

所有的系统应用都会在 /var/log 目录下创建日志文件,或创建子目录再创建日志文件。例如:

文件/目录

说明

/var/log/boot.log

开启或重启日志。

/var/log/cron

计划任务日志

/var/log/maillog

邮件日志。

/var/log/messages

该日志文件是许多进程日志文件的汇总,从该文件可以看出任何***企图或成功的***。

/var/log/httpd 目录

Apache HTTP 服务日志。

/var/log/samba 目录

samba 软件日志

/etc/syslog.conf文件

/etc/syslog.conf 是 syslog 的配置文件,会根据日志类型和优先级来决定将日志保存到何处。典型的 syslog.conf 文件格式如下所示:

*.err;kern.debug;auth.notice /dev/console

daemon,auth.notice /var/log/messages

lpr.info /var/log/lpr.log

mail.* /var/log/mail.log

ftp.* /var/log/ftp.log

auth.* @see.xidian.edu.cn

auth.* root,amrood

netinfo.err /var/log/netinfo.log

install.* /var/log/install.log

*.emerg *

*.alert |program_name

mark.* /dev/console

第一列为日志类型和日志优先级的组合,每个类型和优先级的组合称为一个选择器;后面一列为保存日志的文件、服务器,或输出日志的终端。syslog 进程根据选择器决定如何操作日志。

对配置文件的几点说明:

· 日志类型和优先级由点号(.)分开,例如 kern.debug 表示由内核产生的调试信息。

· kern.debug 的优先级大于 debug。

· 星号(*)表示所有,例如 *.debug 表示所有类型的调试信息,kern.* 表示由内核产生的所有消息。

· 可以使用逗号(,)分隔多个日志类型,使用分号(;)分隔多个选择器。

对日志的操作包括:

· 将日志输出到文件,例如 /var/log/maillog 或 /dev/console。

· 将消息发送给用户,多个用户用逗号(,)分隔,例如 root, amrood。

· 通过管道将消息发送给用户程序,注意程序要放在管道符(|)后面。

· 将消息发送给其他主机上的 syslog 进程,这时 /etc/syslog.conf 文件后面一列为以@开头的主机名,例如@see.xidian.edu.cn。

logger命令

logger 是Shell命令,可以通过该命令使用 syslog 的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。

logger命令的语法为:

logger [-i] [-f filename] [-p priority] [-t tag] [message...]

每个选项的含义如下:

选项

说明

-f filename

将 filename 文件的内容作为日志。

-i

每行都记录 logger 进程的ID。

-p priority

指定优先级;优先级必须是形如 facility.priority 的完整的选择器,默认优先级为 user.notice。

-t tag

使用指定的标签标记每一个记录行。

message

要写入的日志内容,多条日志以空格为分隔;如果没有指定日志内容,并且 -f filename 选项为空,那么会把标准输入作为日志内容。

例如,将ping命令的结果写入日志:

$ ping 192.168.0.1 | logger -it logger_test -p local3.notice&

$ tail -f /var/log/userlog

Oct 6 12:48:43 kevein logger_test[22484]: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

Oct 6 12:48:43 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=49.7 ms

Oct 6 12:48:44 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=68.4 ms

Oct 6 12:48:45 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=315 ms

Oct 6 12:48:46 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=279 ms

Oct 6 12:48:47 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=347 ms

Oct 6 12:48:49 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=6 ttl=253 time=701 ms

Oct 6 12:48:50 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=7 ttl=253 time=591 ms

Oct 6 12:48:51 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=8 ttl=253 time=592 ms

Oct 6 12:48:52 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=9 ttl=253 time=611 ms

Oct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 ms

ping命令的结果成功输出到 /var/log/userlog 文件。

命令 logger -it logger_test -p local3.notice 各选项的含义:

· -i:在每行都记录进程ID;

· -t logger_test:每行记录都加上“logger_test”这个标签;

· -p local3.notice:设置日志类型和优先级。

日志转储

日志转储也叫日志回卷或日志轮转。Linux中的日志通常增长很快,会占用大量硬盘空间,需要在日志文件达到指定大小时分开存储。

syslog 只负责接收日志并保存到相应的文件,但不会对日志文件进行管理,因此经常会造成日志文件过大,尤其是WEB服务器,轻易就能超过1G,给检索带来困难。

大多数Linux发行版使用 logrotate 或 newsyslog 对日志进行管理。logrotate 程序不但可以压缩日志文件,减少存储空间,还可以将日志发送到指定 E-mail,方便管理员及时查看日志。

例如,规定邮件日志 /var/log/maillog 超过1G时转储,每周一次,那么每隔一周 logrotate 进程就会检查 /var/log/maillog 文件的大小:

· 如果没有超过1G,不进行任何操作。

· 如果在1G~2G之间,就会创建新文件 /var/log/maillog.1,并将多出的1G日志转移到该文件,以给 /var/log/maillog 文件瘦身。

· 如果在2G~3G之间,会继续创建新文件 /var/log/maillog.2,并将 /var/log/maillog.1 的内容转移到该文件,将 /var/log/maillog 的内容转移到 /var/log/maillog.1,以保持 /var/log/maillog 文件不超过1G。

可以看到,每次转存都会创建一个新文件(如果不存在),命名格式为日志文件名加一个数字(从1开始自动增长),以保持当前日志文件和转存后的日志文件不超过指定大小。

logrotate 的主要配置文件是 /etc/logrotate.conf,/etc/logrotate.d 目录是对 /etc/logrotate.conf 的补充,或者说为了不使 /etc/logrotate.conf 过大而设置。

可以通过 cat 命令查看它的内容:

$cat /etc/logrotate.conf

# see "man logrotate" for details //可以查看帮助文档

# rotate log files weekly

weekly //设置每周转储一次

# keep 4 weeks worth of backlogs

rotate 4 //最多转储4次

# create new (empty) log files after rotating old ones

create //当转储后文件不存储时创建它

# uncomment this if you want your log files compressed

#compress //以压缩方式转储

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d //其他日志文件的转储方式,包含在该目录下

# no packages own wtmp -- we'll rotate them here

/var/log/wtmp { //设置/var/log/wtmp日志文件的转储参数

monthly //每月转储

create 0664 root utmp //转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664

rotate 1 //最多转储一次

}

注意:include 允许管理员把多个分散的文件集中到一个,类似于C语言的 #include,将其他文件的内容包含进当前文件。

include 非常有用,一些程序会把转储日志的配置文件放在 /etc/logrotate.d 目录,这些配置文件会覆盖或增加 /etc/logrotate.conf 的配置项,如果没有指定相关配置,那么采用 /etc/logrotate.conf 的默认配置。

所以,建议将 /etc/logrotate.conf 作为默认配置文件,第三方程序在 /etc/logrotate.d 目录下自定义配置文件。

logrotate 也可以作为命令直接运行来修改配置文件。

linux如何查看系统崩溃日志,Linux系统日志及日志分析相关推荐

  1. linux查看安装的所有内核,Linux怎么查看系统已安装内核

    当我们需要在Linux系统中安装一些软件而去下载安装文件时,一般都需要确认到底下载哪个版本的安装包,这就需要我们知道自己的Linux系统到底是什么版本.什么内核,下面跟着学习啦小编一起来了解一下Lin ...

  2. linux下查看系统socket读写缓冲区

    一:linux下查看系统socket读写缓冲区大小配置: http://blog.csdn.net/herecles/article/details/8146017 1. tcp 收发缓冲区默认值 [ ...

  3. linux 如何查看属性,linux 下查看系统属性

    linux 下查看系统属性 (2009-06-28 19:01:34) 标签: linux 杂谈 分类: OS linux下查看系统属性 1.查看cpu信息 查看所有cpu信息:cat /proc/c ...

  4. Linux系统查看系统硬件,linux怎么查看系统硬件信息

    有时候想查看电脑中的系统硬件信息不知道怎么办下面是学习啦小编带来的关于linux怎么查看系统硬件信息的内容,欢迎阅读! linux怎么查看系统硬件信息? 查看cpu: lscpu命令,查看的是cpu的 ...

  5. linux 更改make版本,Linux下查看系统版本和make版本

    一.查看Linux内核版本命令(两种方法): 1.cat /proc/versionz [root@localhost ~]# cat /proc/version Linux version 2.6. ...

  6. Linux下查看系统启动时间、安装时间

    Linux下查看系统启动时间.安装时间 一.查看启动时间: 1.uptime命令 [root@iZ8vbf5x2ke0nbfocpm645Z ~]# uptime 17:52:33 up 14 day ...

  7. linux添加用户后怎么查看,linux怎样查看系统新添加的用户?

    linux怎样查看系统新添加的用户? 答案:4  信息版本:手机版 解决时间 2019-10-06 23:42 已解决 2019-10-06 06:26 如题!老板把服务器让别人配的,但是现在屡次发生 ...

  8. linux查看vmware的版本,linux中查看系统版本信息的方法

    前言 测试环境:测试环境: centos7.2 64位 测试用户:root 查看系统位数(32位或64位) 方法1: [root@VM_0_13_centos ~]# uname -a Linux V ...

  9. linux 查看核数与线程数,Linux下查看系统CPU个数、核心数、线程数

    Linux下查看系统CPU个数.核心数.线程数 查看系统CPU个数(物理个数)cat /proc/cpuinfo |grep "physical id"|sort -u 结果如下: ...

  10. linux 下查看应用版本信息,Linux下查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a   (Linux查看版本当前操作系统内核信息) 2.# cat /proc/vers ...

最新文章

  1. pandas 字符串数据类型转换成数字型
  2. 字节跳动学习笔记:java实例变量和静态变量
  3. 数据结构和算法分析:第一章 引论
  4. yarn add webpack webpack-cli 报错
  5. php 避免xss_PHP防止XSS注入
  6. 去除le-table表格的hover效果
  7. 作者:许方圆,男,国网能源研究院能源决策支持技术研发中心中级工程师。...
  8. ProgressBar--进度条
  9. opt eclipse jre bin java_在Eclipse中指定JDK
  10. 盈建科弹性板6计算_YJK参数设置详细解析
  11. Scala官网下载不下来问题-已解决
  12. matlab中提示错误使用* BLAS loading error解决方法
  13. python 绘图sns.distplot
  14. 设计模式详解——模版方法模式
  15. Linux网络下载管理工具(lftp, ftp, lftpget, wget)
  16. 可视化大作业复习笔记
  17. 12个你值得拥有的虚拟科学实验APP、工具和资源
  18. 爱测未来移动-iTest特色功能介绍
  19. 2022年招投标,最加分的资质证书排行榜!
  20. 怎么修改网页边框html,DIV+CSS网页布局之边框的设置方法

热门文章

  1. 一种雷达和电子海图图像叠加方法
  2. 搭建一个开发Predix软件的Windows系统(1)准备工作
  3. W5500以太网控制器芯片(一):ioLibrary库实现TCP服务器
  4. I350系列服务器网卡驱动,Intel英特尔网卡驱动
  5. ppap文件过程流程图制作_PPAP提交范本---过程流程图
  6. K-Java WAP浏览器
  7. 使用CASEWHEN批量拼凑Update语句
  8. windows用户密码破解
  9. linux 查看md5值
  10. 弹窗插件zDialog使用教程