列出日志通道是什么
Get-WinEvent -ListLog 枚举本机所有事件日志通道,给出每条通道的记录数、当前大小上限、是否启用以及写入模式。排查“某日志怎么没有记录”时,第一步就用它:多数情况不是事件没发生,而是通道本身处于关闭状态(Operational 类日志默认常是关的),或者已被设为循环覆盖、旧记录早就被冲掉了。
基本信息
| 适用平台 | Windows Vista 起;PowerShell 环境通用 |
|---|---|
| 基本语法 | Get-WinEvent -ListLog * 或 -ListLog <通道名> |
| 关注字段 | LogName、RecordCount、IsEnabled、MaximumSizeInBytes、LogMode |
| 启用日志 | wevtutil sl <通道> /e:true |
| 调整容量 | wevtutil sl <通道> /ms:<字节数> |
| 常用范围 | System、Application、Security、Microsoft-Windows-*/Operational |
典型使用场景
- 排查特定组件日志为空的根因,确认通道是否关闭
- 盘点本机日志通道数量与容量,规划日志空间
- 找记录数最多的通道,评估日志增长速度
- 确认某个通道是否会发生滚动覆盖,决定要不要先导出取证
- 开启排障所需的 Operational 日志后再复现问题
常用示例
常用示例
Get-WinEvent -ListLog * | Where-Object RecordCount -gt 0 | Sort-Object RecordCount -Descending | Select-Object -First 20 LogName, RecordCount, IsEnabled, MaximumSizeInBytes
Get-WinEvent -ListLog 'Microsoft-Windows-GroupPolicy/Operational' | Format-List LogName, IsEnabled, LogMode, MaximumSizeInBytes # 单通道详情
Get-WinEvent -ListLog * | Where-Object { -not $_.IsEnabled } | Select-Object LogName, RecordCount # 找被关闭的通道
wevtutil sl 'Microsoft-Windows-GroupPolicy/Operational' /e:true # 排障前临时开启
wevtutil sl System /ms:134217728 # 把系统日志上限调到 128MB
Get-WinEvent -ListLog * | Where-Object LogMode -eq 'Circular' | Select-Object LogName, MaximumSizeInBytes # 会被覆盖的通道字段读法
| 字段 | 含义 | 排查价值 |
|---|---|---|
| LogName | 通道名称 | 查询与配置时的唯一标识 |
| RecordCount | 当前记录条数 | 为 0 说明没写入或被清空 |
| IsEnabled | 是否启用 | False 时不会产生记录 |
| MaximumSizeInBytes | 容量上限 | 满了会覆盖或不记录 |
| LogMode | 写入模式 | Circular 会滚动覆盖旧记录 |
| LogIsolation | 隔离级别 | 影响权限与配额 |
排障前先确认通道已启用再复现问题:很多 Operational 与 Analytic 日志默认关闭,先复现再去找日志会白等一场。
开启分析或调试类日志会显著增加磁盘写入与日志量,排障结束后记得关闭,否则长期运行会持续占用 IO 与空间。
容量与写入模式要一起看:容量偏小又设为循环覆盖时,能回溯的时间窗会短得超出想象。安全与系统这类关键通道,先按业务要求的回溯天数估算日增量,再决定容量。