菜鸟科技网

Windows日志查看命令有哪些?

使用事件查看器(图形化界面,最推荐)

这是最直观、最常用的方法,适合大多数用户,特别是排查特定问题时。

Windows日志查看命令有哪些?-图1
(图片来源网络,侵删)

如何打开事件查看器

  • 方法一(最快): 按下 Win + R 键,输入 eventvwr.msc,然后按回车。
  • 在开始菜单搜索框中输入“事件查看器”(Event Viewer)并打开它。

如何查看日志

事件查看器窗口左侧有一个“日志”窗格,里面包含了不同类型的日志。

  • Windows 日志:这是最核心的日志区域,包含以下几类:

    • 应用程序:记录由已安装应用程序生成的错误、警告和信息。
    • 安全:记录与安全相关的事件,如登录/注销、账户管理、对象访问、策略更改、特权使用等。排查安全问题,这里是首选
    • 系统:记录 Windows 系统组件驱动程序和组件生成的错误、警告和信息。
    • 安装程序:记录软件的安装、卸载和更新操作。
    • 转发事件:用于收集来自其他计算机的事件。
  • 应用程序和服务日志:记录更具体的应用程序或服务日志,Microsoft、Windows 等厂商的日志。

如何筛选和查找日志

当日志很多时,直接查看会很困难,使用筛选功能可以快速定位问题。

Windows日志查看命令有哪些?-图2
(图片来源网络,侵删)
  1. 在左侧窗格中,选择你想查看的日志(Windows 日志” -> “系统”)。
  2. 在右侧的“操作”窗格中,点击“筛选当前日志...”。
  3. 在弹出的窗口中,你可以设置筛选条件:
    • 级别:勾选你关心的级别,例如只看“错误”和“警告”,可以忽略大量的“信息”日志。
    • 关键字:输入关键词,dhcpdisknetwork 等,只显示包含这些关键词的条目。
    • 事件来源/日期范围:也可以根据这些条件进行筛选。
  4. 点击“确定”后,日志列表就会只显示符合条件的内容。

使用 wevtutil 命令(命令行工具)

wevtutil (Windows Event Utility) 是一个功能强大的命令行工具,适合脚本编写或远程管理服务器。

基本语法

wevtutil.exe {qe | gl | el} [选项]
  • qe (Query Events):查询事件。
  • gl (Get Log):获取日志信息。
  • el (Enum Logs):列出所有可用的日志。

常用命令示例

列出所有日志名称

wevtutil el

这个命令会列出系统中所有日志的完整路径。

查看特定日志的详细信息 查看“系统”日志的基本信息。

Windows日志查看命令有哪些?-图3
(图片来源网络,侵删)
wevtutil gl System

查询日志(最常用) 查询“系统”日志中最近5条级别为“错误”的事件。

wevtutil qe System /c:5 /rd:true /f:text
  • /c:5:显示最近 5 条记录。
  • /rd:true:按时间倒序排列(最新的在前)。
  • /f:text:以纯文本格式输出,方便阅读,如果不加此参数,输出会是 XML 格式。

使用更复杂的查询 查询“应用程序”日志中,在过去24小时内,任何来源产生的、包含关键词 "failed" 的事件。

wevtutil qe Application /q:*[System[TimeCreated[timediff(@SystemTime) <= 86400000]]] and (*[EventData[Data[@Name='param1']='failed']]]*) /f:text
  • /q:...:这是一个 XPath 查询语句,非常强大但语法复杂。
    • TimeCreated[timediff(@SystemTime) <= 86400000]:筛选最近24小时内(86400秒)的事件。
    • EventData[Data[@Name='param1']='failed']:筛选事件数据中某个参数为 'failed' 的记录,这个例子需要根据实际日志结构调整。

使用 PowerShell(更现代、更强大的脚本工具)

PowerShell 是 Windows 现代化的命令行和脚本环境,提供了更简洁、更强大的对象处理能力。

基本语法

Get-WinEvent [-LogName <日志名>] [-MaxEvents <数量>] [-FilterXPath <XPath查询>] | Format-List

常用命令示例

列出所有日志

Get-WinEvent -ListLog *

这会显示所有日志的详细信息,包括最大大小、保留策略等。

查看“系统”日志中的最近10条错误

Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.LevelDisplayName -eq 'Error' } | Format-List
  • Get-WinEvent -LogName System:获取“系统”日志。
  • Where-Object { $_.LevelDisplayName -eq 'Error' }:通过管道符 将结果传递给 Where-Object,筛选出“级别显示名称”为“错误”的条目。
  • Format-List:将结果格式化为易于阅读的列表。

使用 FilterHashtable 提高性能(推荐) 对于大型日志,使用哈希表筛选比 XPath 更快、更易读。

Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    Level   = 2  # 2 代表警告,1 代表错误,0 代表信息
    StartTime = [datetime]::Today.AddDays(-1) # 查询过去24小时内的
} | Format-List
  • FilterHashtable:一个包含筛选条件的哈希表。
    • LogName:指定日志名称。
    • Level:指定事件级别(0=信息, 1=错误, 2=警告, 3=详细, 4=分析, 5=调试)。
    • StartTime / EndTime:指定时间范围。

使用 findstr 命令(快速搜索文本)

如果你已经知道日志文件的位置(通常位于 C:\Windows\System32\winevt\Logs\),并且只想快速搜索文本内容,可以使用 findstr

注意: 此方法直接操作日志文件(.evtx),不如事件查看器或 PowerShell 灵活,但对于快速关键词搜索非常快。

# 搜索系统日志文件中包含 "dhcp" 的所有行
findstr /i "dhcp" C:\Windows\System32\winevt\Logs\System.evtx
  • /i:表示不区分大小写。

总结与对比

方法 优点 缺点 适用场景
事件查看器 直观图形界面,功能强大,易于筛选和导出 无法直接用于脚本 日常排查问题、新手用户、查看特定事件详情
wevtutil 功能强大,适合命令行和远程管理 语法相对复杂,输出为XML时不易读 批量处理、服务器管理、编写自动化脚本
PowerShell 现代化,语法灵活,处理对象能力强,FilterHashtable性能高 需要学习PowerShell语法 高级用户、系统管理员、编写复杂脚本和数据分析
findstr 速度极快,语法简单 功能单一,只能搜索文本,无法解析日志结构 已知日志文件位置,仅需要快速关键词搜索

建议:

  • 日常使用和初步排查:首选 事件查看器
  • 需要自动化或远程管理:学习使用 PowerShellwevtutil
  • 快速大海捞针:如果知道文件名,可以用 findstr 作为补充。
分享:
扫描分享到社交APP
上一篇
下一篇