有关linux日志之类的记录


常见日志目录在 /var/log

我们可以根据服务对象粗略的将日志分为两类

  • 系统日志主要是存放系统内置程序或系统内核之类的日志信息如 alternatives.log 、btmp 等等,
  • 应用日志主要是我们装的第三方应用所产生的日志如 tomcat7 、apache2 等等。

日志名称

记录信息

alternatives.log

系统的一些更新替代信息记录

apport.log

应用程序崩溃信息记录

apt/history.log

使用 apt-get 安装卸载软件的信息记录

apt/term.log

使用 apt-get 时的具体操作,如 package 的下载、打开等

auth.log

登录认证的信息记录

boot.log

系统启动时的程序服务的日志信息

btmp

错误的信息记录

Consolekit/history

控制台的信息记录

dist-upgrade

dist-upgrade 这种更新方式的信息记录

dmesg

启动时,显示屏幕上内核缓冲信息,与硬件有关的信息

dpkg.log

dpkg 命令管理包的日志。

faillog

用户登录失败详细信息记录

fontconfig.log

与字体配置有关的信息记录

kern.log

内核产生的信息记录,在自己修改内核时有很大帮助

lastlog

用户的最近信息记录

wtmp

登录信息的记录。wtmp可以找出谁正在进入系统,谁使用命令显示这个文件或信息等

syslog

系统信息记录

其他的日志格式也都类似于之前我们所查看的日志,主要便是时间,操作。而这其中有两个比较特殊的日志,其查看的方式比较与众不同,因为这两个日志并不是 ASCII 文件而是被编码成了二进制文件,所以我们并不能直接使用 less、cat、more 这样的工具来查看,这两个日志文件是 wtmp,lastlog

我们查看的方法是使用 last 与 lastlog 工具来提取其中的信息

who //who 用来查看系统中已经登录的用户

last //last 查询当前已经登录和过去登录的用户信息

lastlog 
//lastlog 查看系统中所有用户的最后一次登录时间、登录端口和来源IP
//lastlog 命令默认是去读取 /var/log/lastlog 日志文件的,这个文件同样是二进制文件,不能直接用 vi 编辑,需要使用 lastlog 命令调用

rsyslog

日志的实现可以通过两种方式:

  • 一种是由软件开发商自己来自定义日志格式然后指定输出日志位置;
  • 一种方式就是 Linux 提供的日志服务程序,而我们这里系统日志是通过 syslog 来实现,提供日志管理服务。

syslog 是一个系统日志记录程序,在早期的大部分 Linux 发行版都是内置 syslog,让其作为系统的默认日志收集工具,虽然随着时代的进步与发展,syslog 已经年老体衰跟不上时代的需求,所以他被 rsyslog 所代替了,较新的 Ubuntu、Fedora 等等都是默认使用 rsyslog 作为系统的日志收集工具

rsyslog 的配置文件有两个,

  • 一个是 /etc/rsyslog.conf
  • 一个是 /etc/rsyslog.d/50-default.conf。

第一个主要是配置的环境,也就是 rsyslog 加载什么模块,文件的所属者等;而第二个主要是配置的 Filter Conditions

配置详解


logger

自定义写如日志

详解1

详解2

详解3例子

rsyslog 通过 Facility 的概念来定义日志消息的来源,以便对日志进行分类,Facility 的种类有:

参数:

  • -d, --udp
    使用数据报(UDP)而不是使用默认的流连接(TCP)
  • -i, --id
    逐行记录每一次logger的进程ID
  • -f, --file file_name
    记录特定的文件
  • -h, --help
    显示帮助文本并退出
  • -n, --server
    写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程
  • -s, --stderr
    输出标准错误到系统日志。
  • -t, --tag tag
    指定标记记录
  • -u, --socket socket
    写入指定的socket,而不是到内置系统日志例程。
  • -V, --version
    显示版本信息并退出
  • -P, --port port_num
    使用指定的UDP端口。默认的端口号是514
  • -p, --priority priority_level
    指定输入消息日志级别,优先级可以是数字或者指定为 " facility.level" 的格式。

类别

解释

kern

内核消息

user

用户信息

mail

邮件系统消息

daemon

系统服务消息

auth

认证系统

authpriv

权限系统

syslog

日志系统自身消息

cron

计划安排

news

新闻信息

local0~7

由自定义程序使用

而另外一部分 priority 也称之为 serverity level,除了日志的来源以外,对统一源产生日志消息还需要进行优先级的划分,而优先级的类别有以下几种:

类别

解释

emergency

系统已经无法使用了

alert

必须立即处理的问题

critical

很严重了

error

错误

warning

警告信息

notice

系统正常,但是比较重要

informational

正常

debug

debug的调试信息

panic

很严重但是已淘汰不常用

none

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

sudo service rsyslog restart //可能再启动时会失败,什么pid已经存在的,那就要用下面方法kill掉

ps -aux|grep "rsyslog" //找到pid
kill -9 pid

sudo service rsyslog start //每次修改配置后都要重启

/**
* 其实改 /etc/rsyslog.conf 里配置了子配置文件的路径
* 就是那个/etc/rsyslog.d/里的东西
* 其实都一样
* 我就新建/etc/rsyslog.d/zzy.conf
* 里面就写:
* local7.* /var/log/zzy.log
* 意思是来自local7的所有消息都记录到/var/log/zzy.log中。
* local看上表
**/
 logger -i -t "mytest" -p local7.notice "testmy"
 //notice看上表
 //结果在/var/log/zzy.log

转储日志

我们可以根据日志文件的大小,也可以根据其天数来切割日志、管理日志,这个过程又叫做“转储”。

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