日志系统将我们系统运行的每一个状况信息都使用文字记录下来,这些信息有助我们观察系统运行过程中正常状态和系统运行错误时快速定位错误位置的途径等;下面学习啦小编主要概述一下Linux操作系统中的日志功能。

Linux操作系统中的日志功能详解

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

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

日志类型

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

日志优先级

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

优先级

说明

emerg

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

alert

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

crit

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

err

一般错误消息。

warning

警告。

notice

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

info

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

debug

调试程序产生的信息。

none

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

常见日志文件

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

/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...]

每个选项的含义如下:

例如,将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日志配置含义,Linux操作系统中的日志功能详解相关推荐

  1. Kali linux 2016.2(Rolling)中的payloads模块详解

    payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在MSF中为我们提供了大量的实用payloads. 当我们执行 Show payloads命令后,显示3列,分别为Ex ...

  2. windows无法配置此无线连接_Kubernetes 1.18功能详解:OIDC发现、Windows节点支持,还有哪些新特性值得期待?...

    Kubernetes 1.18发布,一些对社区产生影响的新特性日渐完善,如 KSA(Kubernetes Service Account) tokens的OIDC发现和对Windows节点的支持.在A ...

  3. Android中ICS4.0Launcher中Fold的功能详解【androidICS4.0--Launcher系列三】

    AndroidICS4.0的文件夹和2.3的文件夹区别比较大,主要区别有: 一.android2.3的文件夹大小是固定的,4.0的文件夹大小是按照里面的元素大小决定的. 二.android2.3的文件 ...

  4. linux64位ioremap函数,linux操作系统中的ioremap函数详解

    在编写驱动程序的过程中,我们总免不了要使用ioremap函数来将我们的硬件的地址映射到系统的虚拟地址空间. ioramp函数原型: #define ioremap(cookie,size) __ior ...

  5. linux mv 保持目录结构_Linux中的mv命令详解

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...

  6. Kali linux 2016.2(Rolling)中的auxiliary模块详解

    不多说,直接上干货! root@kali:~# msfconsole__________________________________________________________________ ...

  7. python queryset_django 中QuerySet特性功能详解

    Book表的数据显示 id title price publish_id 2 Linux 30 1 3 项塔兰 45 2 4 追风筝的人 39.9 3 5 富爸爸 23 10 创建queryset 视 ...

  8. 【PHP发展史】PHP5.2 到 PHP5.6 中新增的功能详解

    为什么80%的码农都做不了架构师?>>>    截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护的 PHP5.2, 其余 ...

  9. LoadRunner中IP欺骗功能详解

    应用程序服务器和网络设备使用IP地址来识别客户端.应用程序服务器通常会对来自同一计算机的客户端信息进行高速缓存.网络路由器尝试对原信息和目标信息进行高速缓存 以优化吞吐量.如果多个用户具有相同的IP地 ...

最新文章

  1. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...
  2. Exception: This is not supported, use MenuItemCompat.getActionProvider()的处理
  3. GradSearchCv 自定义验证集
  4. Ovum观察:运营商通信PaaS发展趋势强劲
  5. vmware虚拟的ubuntu18.04死机,尝试关闭时关机报“虚拟机xxx繁忙”
  6. Scala入门(一):直接在eclipse上安装Scala IDE
  7. plsql command window create function
  8. LGTM,XGBOOST,LIGHTGBM
  9. android 有线网络,安卓手机免费“有线”上网
  10. 【转】宁做创业狼,不做打工狗(ZT)
  11. Mac电脑网速慢的问题之一(硬件:MTU)
  12. 如何在ex表格导入php_怎么使用php把表格中的数据导入到excel中,php如何快速导入excel表格数据...
  13. css 控制 段落 超出三行的部分显示...
  14. 并发知识体系大全:饿了么4面(Java岗)面经分享,干货满满
  15. 操作系统中文件存储空间的管理
  16. OpenCV - 分水岭算法图像分割(Python实现)
  17. 复旦大学管理学院2017年考博(高级微观经济学+管理理论综合)真题,高微老师上课资料
  18. 两个均匀分布相加、两个正态分布相加、由均匀分布生成正态分布
  19. java -jar 参数_java -jar 参数说明
  20. linux usb gadget printer使用

热门文章

  1. Scrapy+selenimu分析《海王》到底有多好看
  2. 有一定基础的 C++ 学习者该如何学习 Windows 编程?
  3. win10神州网信政府版系列设置(麦克风、摄像头、相机、屏幕保护时间)
  4. 微信小程序——拍照、压缩转换base64(不留存照片在本地相册)
  5. 计算机中常用英文字母bit表示,1计算机那基础知识.ppt
  6. shell 与 /etc/shells 功能
  7. 学了C/C++,我能做什么?
  8. (10-4)redis-hash数据类型
  9. 从职校到前端培训班经历(三)
  10. linux检查网络命令总结