全平台日志查看完整攻略

覆盖 LinuxWindows 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 控制台输出(必选
UTF8UTF-8 编码(含 BOM)现代文本、代码文件
UTF8NoBOMUTF-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 行
Linuxgrep -A ngrep -C n
Windowssls -Context 0,nsls -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