Linux服务器日志查看完全指南

在Linux服务器上排查项目问题,查看日志是最直接、最高效的手段。本教程将从基础到进阶,全面介绍在Linux环境中查看、分析和监控项目日志的各种方法。

一、 定位日志文件

首先,你需要知道日志文件在哪里。项目日志的位置通常由项目配置决定。

常见日志目录

  • 项目部署目录 :很多项目会将日志文件生成在自身的应用目录下,例如 ./logs/
  • 系统应用日志目录/var/log/ 是Linux系统存放日志的标准位置。
    • 系统日志:/var/log/syslog (Ubuntu/Debian) 或 /var/log/messages (CentOS/RHEL)。
    • 认证日志:/var/log/auth.log (Ubuntu/Debian) 或 /var/log/secure (CentOS/RHEL)。
    • Web服务器日志:Nginx日志通常在 /var/log/nginx/,Apache日志在 /var/log/apache2//var/log/httpd/
  • 数据库日志:MySQL日志默认在 /var/log/mysql/
  • 用户目录 :少数应用可能会在用户主目录下生成日志,如 ~/.java/

使用命令定位

如果不确定日志位置,可以使用 find 命令进行查找。

复制代码
# 在当前目录及其子目录中查找所有 .log 文件
find . -name "*.log"

# 在整个系统中查找名为 "app.log" 的文件 (可能需要sudo权限)
sudo find / -name "app.log"
二、 核心查看命令

定位到日志文件后,可以使用以下核心命令进行查看。

1. cat:一次性查看全部内容

cat 命令会将整个文件内容输出到终端。它适合查看体积较小的日志文件。对于大文件,输出会刷屏,难以阅读。

复制代码
cat /path/to/your/app.log

2. less / more:分页浏览大文件

当日志文件非常大时,less 是最佳选择。它允许你逐页滚动,并支持搜索。

  • 基本用法less /path/to/your/app.log
  • 常用快捷键
    • 空格键Page Down:向下翻页。
    • bPage Up:向上翻页。
    • /关键词:向下搜索关键词,例如 /error
    • n:跳转到下一个匹配项。
    • N:跳转到上一个匹配项。
    • q:退出 less

more 命令功能类似,但只能向下翻页,功能不如 less 强大。

3. head / tail:查看文件首尾

这两个命令用于查看文件的开头或结尾部分。

head:查看文件开头。默认显示前10行。

复制代码
# 查看前20行
head -n 20 /path/to/your/app.log

tail:查看文件结尾。默认显示后10行。这是查看最新日志最常用的命令。

复制代码
# 查看最后50行
tail -n 50 /path/to/your/app.log

4. tail -f:实时监控日志

这是排查线上问题时的"神器"。-f (follow) 参数会让 tail 命令持续监控文件,一旦有新的日志写入,就会立即显示在终端上。

复制代码
# 实时监控日志文件的最新内容
tail -f /path/to/your/app.log

Ctrl+C 可以退出实时监控模式。

三、 高级筛选与组合命令

单纯的查看可能不够,我们常常需要筛选出关键信息。

1. grep:强大的文本搜索工具

grep 命令可以从日志文件中筛选出包含特定关键词的行。

基本搜索:查找包含 "error" 的行。

复制代码
grep "error" /path/to/your/app.log

忽略大小写 :使用 -i 参数。

复制代码
grep -i "error" /path/to/your/app.log    

排除匹配 :使用 -v 参数,例如排除所有 "INFO" 级别的日志。

复制代码
grep -v "INFO" /path/to/your/app.log

显示上下文 :使用 -A (After) 和 -B (Before) 显示匹配行及其前后N行,便于了解错误发生的上下文。

复制代码
# 显示包含 "Exception" 的行及其后5行内容
grep -A 5 "Exception" /path/to/your/app.log

2. 管道符 |:组合命令,威力倍增

管道符 | 可以将一个命令的输出作为另一个命令的输入,实现复杂筛选。

组合 tail 和 grep:实时监控并只筛选出包含 "ERROR" 的日志。

复制代码
tail -f /path/to/your/app.log | grep "ERROR"

组合 cat 和 grep:在整个日志文件中搜索 "Connection timed out" 并忽略大小写。

复制代码
cat /path/to/your/app.log | grep -i "connection timed out"

组合 less 和 grep :在 less 中直接搜索。

复制代码
less /path/to/your/app.log     
# 进入less后,输入 /error 即可搜索
四、 使用 systemd 的 journalctl 查看日志

对于使用 systemd 管理的现代Linux发行版(如Ubuntu 16.04+, CentOS 7+),服务日志会被收集到系统日志中,可以使用 journalctl 命令进行统一查看。

常用命令

查看全部日志:显示所有服务的日志。

复制代码
journalctl

查看特定服务日志 :使用 -u 参数。

复制代码
# 查看 Nginx 服务的日志     
journalctl -u nginx.service

实时跟踪日志 :使用 -f 参数。

复制代码
 # 实时跟踪 MySQL 服务的日志     
journalctl -u mysql.service -f

按时间筛选 :使用 --since--until 参数。

复制代码
# 查看今天的日志     
journalctl --since today
     
# 查看从昨天早上9点到今天早上10点的日志     
journalctl --since "yesterday 09:00" --until "today 10:00"    

按日志级别筛选 :使用 -p (priority) 参数。

复制代码
# 只查看错误(err)及以上级别的日志     
journalctl -p err
五、 查看Docker容器日志

如果你的项目部署在Docker容器中,查看日志的方式会有所不同。

核心命令:docker logs

复制代码
# 查看指定容器的日志
docker logs <container_id_or_name>

# 实时跟踪容器日志
docker logs -f <container_id_or_name>

# 查看容器日志的最后50行
docker logs --tail 50 <container_id_or_name>

# 组合使用:实时跟踪并筛选错误
docker logs -f <container_id_or_name> | grep "ERROR"
六、 生产环境最佳实践

1. 权限问题

很多系统日志文件只有 root 用户或特定用户组(如 adm)才有读取权限。如果遇到 "Permission denied" 错误,请在命令前加上 sudo

复制代码
sudo tail -f /var/log/auth.log

2. 日志轮转 (Log Rotation)

为了避免日志文件无限增长占用磁盘空间,Linux系统通常会配置 logrotate 工具。它会定期(如每天或每周)将日志文件重命名、压缩,并创建一个新的空日志文件。因此,你可能会看到类似 app.log, app.log.1, app.log.2.gz 这样的文件。查看旧日志时,需要先解压:

复制代码
zcat /path/to/your/app.log.2.gz | grep "ERROR"

3. 使用专业工具

对于大型或分布式系统,日志分散在多台服务器上,手动查看非常低效。此时应考虑使用专业的日志集中管理与分析工具,如 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog。这些工具可以集中收集、存储、搜索和可视化所有服务器的日志,极大地提升运维效率。

相关推荐
Ujimatsu12 小时前
虚拟机安装Ubuntu 26.04.x服务器版(命令行版)(2026.5)
linux·windows·ubuntu
hweiyu0013 小时前
Linux命令:arptables
linux·运维
看到代码头都是大的14 小时前
Windows环境下绿色版nginx 1.30使用
运维·nginx
IT研究所14 小时前
AI 时代下的知识管理:从 Claude 的“复盘”能力看生成式 AI价值
大数据·运维·数据库·人工智能·科技·低代码·自然语言处理
仙柒41514 小时前
管理网络安全
linux·运维·服务器
isyangli_blog14 小时前
静态网站部署方案
服务器
云边云科技_云网融合14 小时前
企业出海的 “数字丝绸之路“:SD-WAN 如何重构全球网络竞争力
大数据·运维·网络·人工智能
JZC_xiaozhong14 小时前
2026年深圳企业如何统一管理ERP、MES、OA权限?身份识别与访问管理高效方案
大数据·运维·自动化·企业数据安全·数据集成与应用集成·权限治理·多系统权限管理
福尔摩斯·柯南15 小时前
Ubuntu 14.04/16.04/18.04/20.04/22.04/24.04/26.04全系列LTS长期支持版镜像IOS分享
linux·运维·ubuntu