全平台日志查看完整攻略
覆盖 Linux 与 Windows PowerShell 全场景,包含基础查看、正则合并、上下文查看、编码处理、结果导出,直接复制即用。
一、Linux 日志常用命令全集
1. 基础查看命令
# 实时跟踪日志(持续刷新)
tail -f catalina.out
# 日志切割后自动追踪新文件(线上推荐)
tail -F catalina.out
# 查看末尾 N 行
tail -n 100 catalina.out # 最后100行
tail -n 500 catalina.out # 最后500行
# 查看开头 N 行
head -n 100 catalina.out # 前100行
head catalina.out # 默认前10行
# 分页查看全文(支持翻页、搜索)
less catalina.out
# 等价写法
cat catalina.out | less
- less 操作:上下箭头逐行、PageUp/PageDown翻页、
/关键词搜索、q退出
2. 关键词搜索(grep)
# 精确匹配关键词
grep "ERROR" catalina.out
# 忽略大小写匹配
grep -i "error" catalina.out
# 排除包含指定内容的行
grep -v "INFO" catalina.out
# 多关键词 OR 匹配(ERROR 或 WARN)
grep -E "ERROR|WARN" catalina.out
3. 正则合并规则(核心)
规则:用 grep -E 启用扩展正则,一条表达式完成多条件过滤
.*:匹配任意中间内容():分组匹配|:逻辑或- 格式:
条件1.*条件2(同时满足)、(条件1|条件2)(二选一)
# 合并:8-10点 + 包含 ERROR/WARN(一条正则完成)
grep -E "2026-07-29 (08|09|10):[0-9]{2}.*(ERROR|WARN)" catalina.out
4. 查看匹配行上下文(后几行/前后行)
# 显示匹配行 + 后面 3 行(After)
grep -A 3 "ERROR" catalina.out
# 显示匹配行 + 前面 2 行(Before)
grep -B 2 "ERROR" catalina.out
# 显示匹配行 + 前后各 2 行(Context)
grep -C 2 "ERROR" catalina.out
# 实战:8-10点错误 + 后面3行完整日志
grep -E -A 3 "2026-07-29 (08|09|10):[0-9]{2}.*(ERROR|WARN)" catalina.out
5. 过滤结果导出到文件
# 覆盖写入(清空原有内容)
grep -E "2026-07-29 (08|09|10).*(ERROR|WARN)" catalina.out > error.log
# 追加写入(不覆盖原有内容)
grep -E "ERROR|WARN" catalina.out >> error.log
# 带上下文一起导出
grep -E -A 3 "2026-07-29.*ERROR" catalina.out > error_with_context.log
6. 实时跟踪 + 过滤组合
tail -f catalina.out | grep "ERROR"
tail -f catalina.out | grep -E "ERROR|WARN"
二、Windows PowerShell 日志常用命令全集
重要别名
gc=Get-Content(读取文件内容)sls=Select-String(关键词/正则搜索)
1. 基础查看命令
# 实时跟踪日志(先显示最后10行,持续刷新)
gc .\catalina.out -Encoding OEM -Wait -Tail 10
# 查看末尾 N 行
gc .\catalina.out -Encoding OEM -Tail 100
# 查看开头 N 行
gc .\catalina.out -Encoding OEM -First 100
# 分页查看全文
gc .\catalina.out -Encoding OEM | more
- more 操作:空格翻页、回车逐行、
q退出
2. PowerShell 编码参数详解(解决中文乱码)
乱码根源
Windows 日志默认 GBK/CP936 编码,PowerShell 默认不自动识别,必须手动指定 -Encoding
常用编码值
| 参数值 | 含义 | 适用场景 |
|---|---|---|
| OEM | 系统默认 OEM 编码(GBK/CP936) | Tomcat 日志、Windows 控制台输出(必选) |
| UTF8 | UTF-8 编码(含 BOM) | 现代文本、代码文件 |
| UTF8NoBOM | UTF-8 无 BOM(PowerShell 7+ 默认) | 无 BOM 的 UTF-8 文件 |
| ANSI | 当前系统 ANSI 编码(PowerShell 7.4+) | 兼容旧系统 |
简单规则
- 看日志 ➜
-Encoding OEM - 看代码/配置 ➜
-Encoding UTF8 - 乱码就两个互换尝试
3. 关键词搜索(sls)
# 精确匹配关键词
sls "ERROR" .\catalina.out -Encoding OEM
# 忽略大小写匹配
sls "ERROR" .\catalina.out -Encoding OEM -IgnoreCase
# 排除包含指定内容的行
sls "INFO" .\catalina.out -Encoding OEM -NotMatch
# 多关键词 OR 匹配(ERROR 或 WARN)
sls "ERROR|WARN" .\catalina.out -Encoding OEM
4. 正则合并规则(核心)
规则:sls 原生支持正则,一条表达式完成多条件过滤
.*:匹配任意中间内容(A|B):逻辑或- 格式:
时间正则.*(ERROR|WARN)(时间+错误级别合并)
# 合并:8-10点 + 包含 ERROR/WARN(一条正则完成)
gc '.\catalina072908-10(1).out' -Encoding OEM | sls '2026-07-29 (08|09|10):\d\d.*(ERROR|WARN)'
5. 查看匹配行上下文(后几行/前后行)
参数格式:-Context 前置行数, 后置行数
# 显示匹配行 + 后面 3 行(最常用)
gc ... -Encoding OEM | sls '正则' -Context 0,3
# 显示匹配行 + 前后各 2 行
gc ... -Encoding OEM | sls '正则' -Context 2,2
# 实战:8-10点错误 + 后面3行完整报错
gc '.\catalina072908-10(1).out' -Encoding OEM | sls '2026-07-29 (08|09|10):\d\d.*(ERROR|WARN)' -Context 0,3
6. 过滤结果导出到文件
# 覆盖写入
gc ... -Encoding OEM | sls '正则' > .\error.log
# 追加写入
gc ... -Encoding OEM | sls '正则' >> .\error.log
# 带上下文一起导出
gc ... -Encoding OEM | sls '正则' -Context 0,3 > .\error_context.log
7. 实时跟踪 + 过滤组合
gc .\catalina.out -Encoding OEM -Wait | sls "ERROR"
三、核心知识点总结(必看)
1. 正则合并通用逻辑
- 多条件同时满足:
条件1.*条件2 - 多条件二选一:
(条件1|条件2) - 时间+级别合并:
时间正则.*(ERROR|WARN)
2. 上下文查看参数对比
| 平台 | 查看后 N 行 | 查看前后 N 行 |
|---|---|---|
| Linux | grep -A n | grep -C n |
| Windows | sls -Context 0,n | sls -Context n,n |
3. 导出文件通用规则
>:覆盖写入(清空原有内容)>>:追加写入(不覆盖原有内容)
四、实战万能命令(直接复制)
Linux(8-10点错误 + 上下文 + 导出)
grep -E -A 3 "2026-07-29 (08|09|10):[0-9]{2}.*(ERROR|WARN)" catalina.out > error_8-10.log
Windows PowerShell(8-10点错误 + 上下文 + 导出)
gc '.\catalina072908-10(1).out' -Encoding OEM | sls '2026-07-29 (08|09|10):\d\d.*(ERROR|WARN)' -Context 0,3 > .\error_8-10.log