有关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
自定义写如日志
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,方便管理员及时查看日志。