当前位置: 首页 > 编程日记 > 正文

Linux08-日志

目录

一、systemd的日志

1.1、sytemd-journald与systemd日志

1.2、systemd日志的持久化

二、系统常规日志

2.1、系统日志概述

2.2、查看系统日志文件

2.3、日志的轮转

2.4、分析系统日志

2.5、使用logger发送消息到日志


RHEL7的日志由2个服务负责记录,分别是 systemd-journald 和 rsyslog ,分别记录systemd的日志和系统的常规日志。

一、systemd的日志

1.1、sytemd-journald与systemd日志

关于systemd的日志,要记住以下三方面:

  1. 服务sytemd-journald.service负责记录systemd的日志。
  2. systemd的日志放在 /run/log 目录下,systemd的日志默认是非持久化(掉电就没),可以改为持久化的。
  3. systemd的日志是二进制文件,因此不能用vim、less、cat等直接读取,要使用 journalctl -u sshd.service 或 systemctl status sshd -l来查看。journalctl的 -u 是看哪个unit的服务,-f 是 follow 可以跟踪查看。

先来看看systemd-journald.service 和 journalctl 的用法。

再来看一下什么叫非持久化(掉电就没)。重启一下后,sshd的日志就没有了。

journalctl --since --until,两个选项都接受 YYYY-MM-DD hh:mm:ss的时间参数,可以查看某一个时间段内的systemd日志。

1.2、systemd日志的持久化

默认情况下,systemd的日志保存在 /run/log/journal 中,重启后就丢失了。如果存在目录 /var/log/journal/ ,那么systemd日志就会记录到这个目录中,实现持久化。随后,/var/log/journal/ 下的日志遵循系统日志的规则进行logrotate,具体参看下面的一节。除此之外,这里的日志大小不能超过所处文件系统的10%,也不能造成文件系统可用空间低于15%,这些设置可以在 /etc/systemd/journald.conf 中调节。

systemd日志持久化的过程就是:

  1. 以root用户创建 /var/log/journal/ 目录。
  2. 确保/var/log/journal/ 目录所属用户和所属组分别为root和systemd-journald,权限为 2775。
  3. 以root身份发送特殊信号USR1到systemd-journald进程,使之生效。

由于systemd的日志持久化了,但实际上没有必要看那么多日志,通过 journalctl -b 可以仅显示系统上次启动以来的日志,减少不必要的信息。

二、系统常规日志

2.1、系统日志概述

由rsyslog记录的日志放在 /var/log目录下。这些日志是文本形式的,可以用vim、less、cat等查看内容。这些日志是持久的,掉电也不会丢失。

日志文件用途
/var/log/secure记录 安全和身份验证相关的消息、系统错误的日志。
/var/log/maillog记录 与邮件服务器相关的日志。
/var/log/cron记录 与定期执行的任务相关的日志。
/var/log/boot.log记录 与系统启动相关的日志。
/var/log/message记录 大多数系统日志,除了以上4种。

2.2、查看系统日志文件

系统日志有类别和优先级,关于这些的配置文件为 /etc/rsyslog.conf和/ect/rsyslog.d下的*.conf文件。管理员可以将带有.conf后缀的自定义文件放入/etc/rsyslog.d目录中,这样可以修改rsyslogd的配置而不被rsyslog更新覆盖。可以man 5 rsyslog.conf查看用法。

系统日志优先级
编码优先级严重性
0emerg系统不可用。
1alert必须立即采取措施。
2crit严重状况。
3err非严重错误状况。
4warning警告状况。
5notice正常但重要的事件。
6info消息性事件。
7debug调试信息。

/etc/rsyslog.conf的#### RULES ####部分包含定义日志消息保存位置的配置。每行左侧表示 类别.级别。*是通配符,代表所有类别和所有级别。每行右侧表示日志保存到的文件。rsyslog的日志可能会出现在多个不同的日志文件中。为了避免这种重复,可以将级别设置为none,那么表示重定向到这个日志文件的日志消息不被记录。

除了以上位置,特定的服务可能也将日志写在/var/log目录下特定的目录,比如apache和samba将自己的日志写到/var/log目录下相应的子目录。

比如我们可以指定一个配置文件debug.conf,临时将所有的 debug 级别的日志信息全部写入 /var/log/debug-msg 文件中。写入配置文件 /etc/rsyslog.d/debug.conf 之后,重启 rsyslogd 服务生效。

2.3、日志的轮转

日志通过logrotate工具实现轮转,防止日志将包含/var/log/的文件系统填满。轮转日志文件时,使用扩展名对日志文件重命名,扩展名指定轮转日期,比如截图就是2020年07月02日轮转的。轮转之后,会创建新的日志文件。cron作业会定期运行logrotate,轮转4周之后旧的日志会被自动删掉释放磁盘空间。可以参考 man 8 logrotate,以及 /etc/logrotate.conf配置文件。

2.4、分析系统日志

rsyslogd记录的系统日志在文件末尾追加最新的消息。由rsyslogd记录的日志都以标准的格式记录,分为四个部分,从左到右依次是:

  1. 记录该日志条目的时间戳
  2. 发送该日志的主机
  3. 发送该日志的程序或进程
  4. 发送日志的内容

可以利用 tail -f 跟踪日志信息。比如,/var/log/secure 记录了两次不同用户远程登录和退出的情况。

2.5、使用logger发送消息到日志

logger命令可以发消息到rsyslogd服务。默认情况下,级别为notice,可以用 logger -p 来指定其他级别。在2.2节,我们看到 local7.* 的日志记录到 /var/log/boot.log 日志中,我们也向里面发送一条信息。

相关文章:

Java的小实验——各种测试以及说明

日期:2018.10.07 星期五 博客期:014 一、Java中的位运算 代码如下: 1 package Morts107;2 3 public class Test107 {4 public static void main(String[] args) {5 int z;6 z 13>>1;//00001101(13)---------------…

C++内存的分区

C内存分为四个区: (1)代码区:存放代码转译成的二进制代码。 (2)全局区:存放全局变量、静态变量(static)、常量(如字符串常量)。 全局区中还包含一…

SpringCloud的服务网关zuul

演示如何使用api网关屏蔽各服务来源 一、概念和定义 1、zuul最终还是使用Ribbon的,顺便测试一下Hystrix断路保护2、zuul也是一个EurekaClient,访问服务注册中心,获取元数据,使用本地的Ribbon负载均衡,Hystrix断路保护&…

wrs-tuya-cloud

前言 wrs-tuya-cloud是涂鸦官网针对云开发的插件,包含垂直品类硬件API(万能红外开放能力、设备连接服务、设备OTA固件升级、实时音视频、睡眠带开放能力、体脂秤开放能力、智能门锁开放能力、视频云存储 、邮件服务 、 语音消息服务、消息推送服务、短信服务 、内测…

Windows Server 2016 笔记

从业界普遍实践结果来看,Windows Server在服务器领域真是不太好用。但是,有些时候由于种种原因不得不用,所以还是有必要了解一下的。今天参加了一个Windows Server的培训,主要面对Windows Server 2016,写下这篇博客备忘…

(办公)网页发送到桌面快捷方式怎么做

转载自百度:https://jingyan.baidu.com/article/f79b7cb303d50a9145023e6e.html 有时候一个网页我们需要经常用到,每次找那个需要的网页很耗时间,那么我们怎么把我们需要的网页发送到桌面快捷方式呢? 这样下次我们直接点击桌面上的快捷方式就…

C++程序编译过程

程序编译的过程,是将源代码转换为计算机可执行的机械语言的过程。分为预处理、编译、汇编、链接四步。 (1)预处理:对程序进行预处理,比如将头文件的代码直接赋值到当前代码中等等. (2)编译&am…

Java的注释(详细版)

注释是对代码进行必要的说明,以便于后期的修改、维护和升级。Java的注释分为三种:第一种是**单行注释**:用双斜杠“//”来进行实例://单行注释第二种是**文档注释**:用斜杠“/”和星号“*”来进行实例:/***…

Hadoop的存储架构介绍

http://lxw1234.com/archives/2016/04/638.htm 该文章介绍了Hadoop的架构原理,简单易懂。 目前公司提供Hadoop的运算集群BMR,可以直接申请集群资源。转载于:https://www.cnblogs.com/blog-of-Fourier/p/6809811.html

编译OpenSSH8.4的RPM包及升级

目录 一、安装相关依赖包 二、创建rpmbuild目录并下载源码 三、打包及排错 四、升级到OpenSSH 8.4p1 以下是打包好的OpenSSH 8.4p1,包括7个rpm包,欢迎下载使用。 OpenSSH-8.4p1-Bundle 一、安装相关依赖包 根据以往经验,需要安装wget、…

centos 系统使用verdaccio搭建npm私库

.安装nodejs yum install -y nodejs 2.安装verdaccio npm install -g verdaccio --unsafe-perm 3.配置 a.修改配置文件 config.yaml,在其最后添加监听端口(使其可在外网访问) listen: 0.0.0.0:4873 b.对外开放4873端口 firewall-cmd --state …

视觉SLAM中PNP求解

PNP(Perspective-n-points)是SLAM中估计位姿的重要方法。已知条件为路标点在相机1中的相机坐标以及投影到相机2中的像素坐标,据此去估计相机1、相机2间的位姿。主要解法包括DLT、P3P、EPNP P3P 已知A、B、C在相机1坐标系下的坐标&#xff0…

Java程序的运行原理 用记事本编写Java代码

首先将Java代码写入源文件(.java)中→ 通过 javac 生成class文件(.class) → 再通过java命令执行程序:◆将class文件加载内存(相当于将东西输入大脑)◆检验class文件(大脑检查是否有语法等错误,若无误)◆将…

Linux下修改mysql的root密码后数据库消失怎么处理

Linux系统下如果没有通过password()函数修改mysql的root密码就会导致mysql数据库消失。有些人可能不知道而直接修改了mysql的root密码,于是产生了mysql数据库消失的问题,这个时候该怎么处理呢? 可以用下面的办法解决&a…

编译httpd-2.4.46的RPM包

目录 一、下载源码 二、编译&排错 2.1、第一次编译,解决依赖包问题。 2.2、第二次编译,解决anaconda导致的环境变量问题 2.3、第三次编译,解决apr版本过低问题 提供 apr-1.7.0、httpd-2.4.46 的RPM包下载。 apr-1.7.0-bundle.zip …

C/s模式B/S模式

C/s模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的信息管理系统。 C/S 客户端/服务器 例如QQ,网络游戏,需要下载客户端才能访问服务器的程序 B/S 浏览器/服务器 例如Intel&#xf…

分割catalina.out 每天生成一个文件

1. touch xxx(文件名字).sh 2. vim xxx.sh 写入 ----------------------- #!/bin/shcd dirname $0pwdddate %Y%m%dd7date -d7 day ago %Y%m%dcd ../logs/cp catalina.out catalina.out.${d}cat /dev/null > catalina.outrm -rf catalina.out.${d7} ----------…

、|| 和 、| 的区别(详尽版)

&&和|| 是逻辑运算符(也包括 !) 逻辑运算符含义&&逻辑与(两者为真才为真,一者为假即为假)︱︱逻辑或(两者为假才为假,一者为真即为真)!逻辑非(本来值的…

C++负数、小数如何保存

负整数 正整数直接按照源码存储,负整数按照补码存储。 原码、反码、补码 首先要清楚原码、反码、补码: 计算机中一个字节为8位,在此以一个字节为例: 原码: 十进制1:0000 0001 十进制-1:1000 …

MySQL00-这都不知道还TM学啥MySQL

目录 一、MySQL架构概述 1.1、客户端连接器 1.2、连接层 1.3、可插拔存储引擎 1.4、文件系统与文件 二、配置文件 三、数据文件 四、日志文件(以MySQL5.7.32为例) 4.1、错误日志 Error Log 4.2、一般查询日志 General Query Log 4.3、二进制日…

ORB_SLAM2 PnPSolver

EPNP:已知4组(默认)3D-2D匹配点,构建参考点,通过计算参考点的相机坐标,线性组合成路标点的相机坐标。然后使用ICP估计相机间的位姿变换。   需要注意的事,EPNP可以同时使用N组路标点构建M矩阵…

iOS开发UI篇—多控制器和导航控制器简单介绍

iOS开发UI篇—多控制器和导航控制器简单介绍 一、多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如…

值传递 和 地址传递 的区别(好多句话才可以说清)

要知道什么是**值传递**和**地址传递**,首先要知道什么是**基本数据类型**和**引用类型**。 Java的基本数据类型就八种(除了这八种之外都是引用类型):◆整型:byte(8位) short(16位) int(32位) long(64位)&#xff1…

日期类的时间从为什么是从1970年1月1日(格林威治时间)

I suspect that Java was born and raised on a UNIX system.UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970.是说java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元. 但这依然没很好的解释"为什么",出于好奇&a…

MySQL从5.7.32升级到8.0.22

目录 一、备份与导出数据 二、升级到MySQL-8.0.22同时解决字符集问题 2.1、卸载MySQL-5.7.32 2.2、安装MySQL-8.0.22 2.3、修改配置文件 my.cnf 三、导入数据及配置 3.1、重新创建数据库wordpress 3.2、导入表结构和数据 3.3、启动httpd 今天,贫僧的个人博客…

50个顶级开源营销应用程序

显然,开源营销应用程序占有一席之地。如今,营销部门负责相当大比例的企业应用程序购买和部署决策。事实上,Gartner预测,到2017年,首席营销官(CMO)将比首席信息官(CIO)在I…

C++乘法的int越界问题

在做Leetcode 69. x 的平方根&#xff0c;出现了两种int越界的情况&#xff1a; 整数相乘越界 if(mid * mid < x)这样写的话&#xff0c;mid * mid可能越界&#xff0c;因此可以改为 if(mid < x/mid)整数本身越界 int n_r x;Leetcode给了个例子&#xff0c;x 21474…

C# DataSet与DataTable的区别和用法

DataSet是数据集&#xff0c;DataTable是数据表&#xff0c;DataSet存储多个DataTable。DataSet和DataTable像是专门存储数据的一个容器&#xff0c;在你查询数据库得到一些结果时可以存在里面。 DataSet功能强大有浏览、排序、搜索、过滤、处理分级数据、缓存更改等功能&#…

Java代码块总结(速读版)

**代码块必须直接定义在类中**&#xff0c;有两种&#xff1a;静态代码块 和 非静态代码块 静态代码块是在类&#xff08;class文件&#xff09;加载内存时执行&#xff0c;而非静态代码块是在创建对象&#xff08;new 类名();&#xff09;时执行。public class Test{static{ …

matplotlib01-plot折线图、scatter散点图

目录 一、plot绘制折线图一般用法 二、scatter绘制散点图一般用法 记录一下数据可视化的python库matplotlib&#xff0c;研究并纪录一下。 matplotlib.pyplot.subplots函数。subplots可以绘制一个或多个图表。返回变量fig表示整张图片&#xff0c;变量ax表示图片中的各个图表…