@
1. 日志查询
1.1 输出所有日志
日志如滔滔江水连绵不绝~~找不到目标也就并没有什么意义,所以要加一下条件,如下。
1.2 按服务查询
| [root@pre-iot journal]# journalctl _SYSTEMD_UNIT=docker.service |
| -- Logs begin at Thu 2021-02-18 20:17:12 CST, end at Fri 2021-02-19 14:25:03 CST. -- |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.109 cache.device.go:94 [DEBUG] [cache] GetDevice: A0BB3ED304FA] |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.109 cache.cmdrecord.go:122 [DEBUG] [cache] GetActiveCmdRecordsFromSn sn A |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.110 mqttmessagehandler.go:60 [DEBUG] [mqttMessageHandler] active commands |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.112 mqttproducer.go:60 [DEBUG] [MqttProducer] ProduceMqttMessage] |
| journalctl -u docker.service |
1.3 按级别查询
| [root@pre-iot ~]# journalctl _SYSTEMD_UNIT=docker.service PRIORITY=6 |
| -- Logs begin at Thu 2021-02-18 20:17:12 CST, end at Fri 2021-02-19 14:31:15 CST. -- |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.109 cache.device.go:94 [DEBUG] [cache] GetDevice: A0BB3ED304FA] |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.109 cache.cmdrecord.go:122 [DEBUG] [cache] GetActiveCmdRecordsFromSn sn A |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.110 mqttmessagehandler.go:60 [DEBUG] [mqttMessageHandler] active commands |
| Feb 18 20:17:12 pre-iot dockerd-current[1658]: [2021-02-18 20:17:12:2188.112 mqttproducer.go:60 [DEBUG] [MqttProducer] ProduceMqttMessage] |
关于级别说明:
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
一个字段有哪些值我们可以通过下边命令查看
查看字段值
| [root@pre-iot ~]# journalctl -F PRIORITY |
| 7 |
| 3 |
| 5 |
| 6 |
或写成
1.4 按时间查询
| # journalctl --since "2021-02-19 15:10:00" |
如果时间未填写,默认 00:00:00
| # journalctl --since "2021-02-19 15:10:00" --until "2021-02-19 15:15:00" |
| journalctl --since yesterday |
说明:
1)此时不会带入今天日志
2)其它值如:today
| journalctl --since 10:00 --until "2 hour ago" |
1.5 其他
| [root@pre-iot ~]# journalctl -p 3 -o json-pretty |
| { |
| "__CURSOR" : "s=00000000000000000000000000000000;i=4723d36;b=fa4d204b7c914952aa122f81601779d0;m=7f08844e1a8;t=5bb9b577d9228;x=66fc20d38ca0 |
| "__REALTIME_TIMESTAMP" : "1613650745725480", |
| "__MONOTONIC_TIMESTAMP" : "8729659761064", |
| "_BOOT_ID" : "fa4d204b7c914952aa122f81601779d0", |
| "_TRANSPORT" : "journal", |
| "_PID" : "1658", |
| "_UID" : "0", |
| "_GID" : "0", |
| "_COMM" : "dockerd-current", |
| "_EXE" : "/usr/bin/dockerd-current", |
| "_CMDLINE" : "/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --e |
| "_CAP_EFFECTIVE" : "1fffffffff", |
| "_SYSTEMD_CGROUP" : "/system.slice/docker.service", |
| "_SYSTEMD_UNIT" : "docker.service", |
| "_SYSTEMD_SLICE" : "system.slice", |
| "_MACHINE_ID" : "20190711105006363114529432776998", |
| "_HOSTNAME" : "pre-iot", |
| "CONTAINER_TAG" : "c9199286e1eb", |
| "CONTAINER_ID" : "c9199286e1eb", |
| "CONTAINER_ID_FULL" : "c9199286e1ebec7ab987c55c91bf241aa01dbf5f97c8e43519781bbbdaa97855", |
| "CONTAINER_NAME" : "iot-remoteops", |
| "MESSAGE" : "[2021-02-18 20:19:05:2188.724 cache.upgradetask.go:131 [ERROR] [cache] <nil>]", |
| "PRIORITY" : "3", |
| "_SOURCE_REALTIME_TIMESTAMP" : "1613650745725005" |
| } |
2. 清理和限制
2.1 查看占据磁盘空间
| [root@pre-iot ~]# journalctl --disk-usage |
| Archived and active journals take up 1008.0M on disk. |
2.2 清理日志
说明:保留最新的1G日志
| journalctl --vacuum-size=1G |
说明:清除一年之前的日志
| journalctl --vacuum-time=1years |
2.3 限制大小
- 文件示例
配置文件:/etc/systemd/journald.conf
| SystemMaxUse=2G |
| SystemKeepFree=4G |
| SystemMaxFileSize=100M |
| RuntimeMaxUse=2G |
| RuntimeKeepFree=4G |
| RuntimeMaxFileSize=100M |
- 说明
整体说明
1) 以 "System" 开头的选项用于限制磁盘使用量
也就是 /var/log/journal 的使用量。仅在 /var/log/journal 目录确实存在且可写时才有意义。
2) 以 "Runtime" 开头的选项用于限制内存使用量, 也就是 /run/log/journal 的使用量。
3)journalctl 与 systemd-journald 工具会忽略日志目录中 所有后缀名不等于 ".journal" 或 ".journal~" 的文件, 其他文件 永远不会被清理。
-
SystemMaxUse=
作用:持久存储占用磁盘大小限制
默认:默认值是10%空间与4G空间两者中的较小者;
-
RuntimeMaxUse=
作用:占用内存大小限制(/run文件系统之内)
默认:默认值是10%空间与4G空间两者中的较小者
-
SystemKeepFree=
作用:添加新条目时需要保留的磁盘剩余空间
默认:默认值是15%空间与4G空间两者中的较大者
-
RuntimeKeepFree=
作用:内存保留的剩余空间
默认:默认值是15%空间与4G空间两者中的较大者
-
SystemMaxFileSize=
作用:限制单个日志文件的最大体积(到达此限制后日志文件将会自动滚动)
默认: SystemMaxUse 值的1/8
-
RuntimeMaxFileSize=
作用:限制单个日志文件占用的内存大小(/run文件系统之内)
默认: RuntimeMaxUse= 值的1/8
| systemctl restart systemd-journald |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix