journal查看日志相关

本文介绍如何在RHEL7系统中使用journalctl命令管理日志,包括配置日志持久化存储、查看不同类型的日志及按时间和服务筛选日志等高级功能。

注:只针对RHEL7系列系统 ~

Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

日志的配置文件是/etc/systemd/journald.conf。平常我们查看启动日志只能查看本次启动的日志,上一次的无法查看就是这里需要修改,下面会简单介绍一下。

journalctl功能强大,用法非常多。

查看所有日志(默认情况下 ,只保存本次启动的日志)

journalctl

查看内核日志(不显示应用日志)

journalctl -k

查看系统本次启动的日志

journalctl -b

journalctl -b -0

查看上一次启动的日志(需更改设置)

journalctl -b -1

这里就需要修改文章开头提到的配置文件了~/etc/systemd/journald.conf

否则你会看到这样的提示信息:

########################分隔符############################

所以我们需要将systemd-journald服务配置为在重新启动后永久保留系统日志,只需要将Storage参数设置为persistent。

Storage参数设置值有:

1、persistent:将日志存储在/var/log/journal目录中,该目录在重新启动后仍然存在。

2、volatile:将日记存储在volatile/run/log/journal目录中,这不会导致系统重启。

3、auto:rsyslog将确定使用持久性存储(persistent)还是易失性存储(volatile),如果存在/var/log/journal目录,则rsyslog使用持久性存储,否则使用易失性存储。

对于永久存储,请将其设置为:

[Journal]

Storage=persistent

提交更改后,重新启动systemd-journald服务以使配置更改生效:

systemctl restart systemd-journald

确认服务已重新启动并正在运行:

$ systemctl status systemd-journald

########################分隔符############################

重启系统,然后再查看:

若要检查上一次引导的日志,请使用-b参数筛选日记。没有任何争论,-b选项仅显示上次引导后的消息。它以负数作为参数,显示以前引导的日志。

journalctl -b -1 -p err

查看指定时间的日志

journalctl --since=“2021-09-16 14:22:02”

journalctl --since “30 min ago”

journalctl --since yesterday

journalctl --since “2021-01-01” --until “2021-09-16 13:40”

journalctl --since 07:30 --until “2 hour ago”

显示尾部的最新10行日志

journalctl -n

显示尾部指定行数的日志

journalctl -n 15

实时滚动显示最新日志

journalctl -f

与tail -f类似

查看指定服务的日志

journalctl /usr/lib/systemd/systemd

比如查看docker服务的日志

systemctl status docker

查看指定进程的日志

journalctl _PID=665

查看某个路径的脚本的日志

journalctl /usr/bin/bash

查看指定用户的日志

journalctl UID=33 --since today

查看某个 Unit 的日志

journalctl -u nginx.service

journalctl -u nginx.service --since today

实时滚动显示某个 Unit 的最新日志

journalctl -u nginx.service -f

合并显示多个 Unit 的日志

$ journalctl -u nginx.service -u php-fpm.service --since today

查看指定优先级(及其以上级别)的日志,共有8级

0: emerg

1: alert

2: crit

3: err

4: warning

5: notice

6: info

7: debug

若要检查上一次引导的日志,请使用-b参数筛选日记。没有任何争论,-b选项仅显示上次引导后的消息。它以负数作为参数,显示以前引导的日志。

journalctl -p err -b warning

日志默认分页输出,–no-pager 改为正常的标准输出

journalctl --no-pager

以 JSON 格式(单行)输出

journalctl -b -u nginx.service -o json

以 JSON 格式(多行)输出,可读性更好

journalctl -b -u nginx.serviceqq -o json-pretty

显示日志占据的硬盘空间

journalctl --disk-usage

指定日志文件占据的最大空间,默认为8M

journalctl --vacuum-size=1G

指定日志文件保存多久

journalctl --vacuum-time=1years

查看系统或应用的日志记录时,具体的方法取决于所使用的操作系统和应用程序类型。以下是针对不同环境的详细说明: ### Linux 系统下的日志查看Linux 系统中,日志文件是记录系统操作的重要资源,通常存储在 `/var/log/` 目录下。可以使用以下命令查看日志内容: - **`tail` 命令**:用于查看文件的末尾内容,非常适合实时查看日志更新。例如,使用 `tail -f /var/log/syslog` 可以实时监控系统日志的变化 [^1]。 - **`head` 命令**:用于查看文件的开头部分,默认显示前10行。 - **`cat` 命令**:用于查看整个日志文件的内容,例如 `cat /var/log/syslog`。 - **`journalctl` 命令**:对于使用 `systemd` 的系统,`journalctl` 提供了强大的日志管理功能,可以查看内核日志、服务日志等。 ### Windows 系统下的日志查看 在 Windows 系统中,日志信息可以通过“事件查看器”进行查看,它记录了系统的各种事件,包括应用程序、安全和系统日志。打开“事件查看器”的方法之一是运行命令 `eventvwr.msc /s`,然后导航到“Windows 日志”下的“应用程序”部分,即可查看相关记录 [^2]。 ### 应用程序日志查看 对于应用程序的日志,通常取决于应用程序本身的日志配置。常见的做法包括: - **日志文件**:大多数应用程序会将日志写入特定的日志文件中,这些文件的位置通常可以在应用程序的配置文件中找到。 - **日志框架**:现代应用程序通常使用日志框架(如 Log4j、NLog、logback 等),这些框架提供了丰富的功能来控制日志输出格式、位置以及日志级别等。 - **集中式日志管理**:对于分布式系统,可能会使用集中式的日志管理系统,如 ELK Stack (Elasticsearch, Logstash, Kibana) 或者 Graylog,来收集、存储和分析日志数据。 ### 操作日志记录的实现 对于开发人员来说,实现操作日志记录的方法有多种,其中包括直接在代码中植入操作记录逻辑、使用面向切面编程(AOP)技术,或者利用消息中间件来异步处理日志记录任务 [^3]。 - **直接植入操作记录逻辑**:这是最直接的方式,但在代码中硬编码日志记录逻辑可能会导致代码臃肿,并且难以维护。 - **面向切面编程(AOP)**:使用 AOP 可以将日志记录这样的横切关注点从业务逻辑中分离出来,提高模块化程度。 - **消息中间件**:通过消息队列等中间件异步处理日志记录,可以减轻主应用程序的压力,并提供日志数据的缓冲。 ### 示例代码:使用 Python 记录日志 ```python import logging # 配置日志记录的基本设置 logging.basicConfig(filename='example.log', level=logging.INFO) # 记录一条信息级别的日志 logging.info('This is an info message') ``` 这段代码演示了如何使用 Python 的内置 `logging` 模块来记录日志信息到名为 `example.log` 的文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值