65.9K
CodeProject 正在变化。 阅读更多。
Home

日志向导 - 一个简单有趣的日志查看器!

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (33投票s)

2015年9月2日

GPL3

34分钟阅读

viewsIcon

159606

downloadIcon

4533

监控日志文件可以很有趣!

目录

Log Wizard 系列中的其他

美化格式, 过滤器, 注释, Windows 事件日志

引言

我创建 LogWizard 是为了帮助任何需要处理日志来追踪 bug 和/或发生在其他地方(即客户现场)的问题的人。

注释

  • 该项目托管在 github 上,但我在这里附加了 1.6 快照。
  • 从 1.5 开始,当您运行 LogWizard 时,您会自动收到新版本发布的通知。
  • 自项目启动以来,UI 发生了很大变化。截至 2015 年 12 月 23 日,我已更新图片和文章以展示这一点。任何反馈都深表感谢。

使用 LogWizard

我的重点一直是易用性。在使用 LogWizard 时,大多数事情都应该是直观的。如果不是,那就是我的问题 :) 请告诉我!

您想用 LogWizard 完成的所有操作

  • 可通过 热键 访问。几乎所有内容都可以通过热键访问。
  • 可通过 操作 菜单访问。是的,它是一个按钮,显示在右下角。
  • 可通过 鼠标右键 访问。要么选择一些文本,右键单击,看看会发生什么,要么右键单击任何列标题

当您第一次运行 LogWizard 时,您会看到类似这样的界面

因此,要开始使用,只需拖放一个日志文件。然后,我们将开始工作 :)

截至 1.6 版本,LogWizard 支持以下类型的日志

  • 日志文件
    • 您常用的 log4net、NLog、log4j 文件,它们逐行记录日志消息(完整消息占一行)
    • CSV 文件(逗号分隔值文件)
    • XML 文件
    • 每行日志文件(消息的每个部分写在单独一行上,语法为 name:value
  • Windows 事件日志:本地和远程 Windows 事件日志
  • 调试查看器:通过 OutputDebugString 函数输出的任何内容
  • 数据库:从 1.8+ 开始,您可以连接到数据库。

我计划添加更多日志类型的支持 - 如果您有任何想法,请告诉我!

要了解是否支持日志类型,随着我发布新版本的 LW,只需模拟 操作 >> 打开日志 (Ctrl-O)。现在,它看起来像这样,我会随着支持新内容而更新它

 

背景

我的团队和我创建了一个相当大的软件,每天都在成千上万台机器上运行。我们的客户在遇到问题时,会向我们发送日志。该软件很大,我们运行 10 多个线程,记录大量信息,并且对其进行解析相当复杂。专注于某个问题(客户的问题)一直相当困难。

我们首先想要的是一目了然地识别常见问题/问题 - 打开日志,然后有一些精心设计的视图,可以立即向我们显示常见问题发生的详细信息。

第二个是完全相反的 - 如果有一些不应该发生但却发生的问题,我们也想立即知道 - 同样,立即。

日志记录 - 尽可能多

在日志记录方面,这是一场持续的战斗 - 关于记录什么和不记录什么。您永远不确定您即将关闭的日志消息在客户现场运行时是否会有用。所以为什么不记录下来呢?除非该日志消息会将您的日志文件塞满几十兆字节,否则记录下来 - 并在 LogWizard 中进行过滤(您可以随时返回查看它)可能是一个好主意。

您应该始终尽可能多地记录日志,并使用 LogWizard 创建视图(过滤器)来关注您想要的内容。

 

视图和过滤!

从 1.4 版本开始,您可以更轻松地创建过滤器。更多信息请参见 此处

LogWizard 的核心概念是 **视图**。视图顾名思义 - 是您正在查看的现有日志(文件)的过滤子集。

以下是需要记住的内容

  • 视图过滤器的组合,每个过滤器产生一些信息。
  • 过滤器是 **OR** 运算,所有匹配它们的行都显示在视图中。
  • 第一个匹配的过滤器决定了行的颜色 - 这是区分每条信息重要性的一个非常简单的方法。

这是一个显示应用程序启动和退出的概览视图的示例。

有 3 种类型的过滤器

  • 包含过滤器 - 包含要包含在视图中的行
  • 排除过滤器 - 包含要从视图中排除的行
  • 颜色过滤器 - 指定行或匹配的颜色
    • 当您有一个颜色化整行的过滤器时,它会为整行着色
    • 当您有一个颜色化匹配项的过滤器时,它只会为匹配过滤器的那部分字符着色。它也适用于正则表达式 :)

默认情况下,视图包含所有日志条目。为了让它显示您想要的内容,您有以下选择

  • 开始排除行(换句话说,使用 **排除过滤器**)
  • 指定要包含的行(换句话说,使用 **包含过滤器**)
  • 您也可以组合使用这两种。需要记住的是:排除过滤器在包含过滤器之后运行。

在任何时候,您都可以添加 **颜色过滤器**,这可以使您想要的信息脱颖而出。

随着您对 LogWizard 越来越熟悉,您会越来越多地使用 **颜色过滤器** - 它非常强大!而且正如您将看到的,编辑/添加/删除过滤器很容易,因此您可以根据应用程序的开发进度随时打开/关闭颜色。

视图是持久的

更重要的是,随着您的重点转移,您的视图不必丢失。假设您开始处理应用程序的不同模块。保持您现有的视图不变(也许稍后您会需要它!),创建一个新的视图来关注您此时感兴趣的内容 - 然后开始。

您还可以创建稀有事件的视图 - 以便在它们发生时得到通知。这是一个非常重要的功能。例如,我有一个视图显示用户界面通知、错误和严重错误。当我打开客户的日志时,我首先查看的是 - 该视图中有多少行?如果太多,那就是我首先要检查的。

另一个可能很有用的视图是应用程序运行状况的概览。这显然取决于您的应用程序 - 但您可以记录您的应用程序启动(版本、启动时间、安装位置等)、正在运行的模块、CPU 使用率、应用程序如何结束等等。当您收到客户的日志时,这将为您提供 - 对您想问客户的这些内容的概述。

边输入边过滤

当您第一次拖放日志文件时,日志中的所有行都会显示出来。您会想要过滤掉一些,包含一些,给一些行着色,等等。

要获得入门的感觉,只需单击一行,然后开始键入。请注意,当您键入时,如果找到,它会略微突出显示,如下所示(键入“roam”)

LogWizard 从一开始就作为一个非常智能的文件查看器和过滤器。当您键入时,它会带您到包含您键入内容的第一个行,并将您键入的内容选中。

您可以对选定的内容执行任何操作,例如,Ctrl-Shift-Right,它将像完整的文本编辑器一样将“Roaming”作为一个词选中。

使用当前选定的内容,您可以做一些非常不错的事情

  • F3/Shift-F3 - 它将自动带您到您所选内容的下一个/上一个出现位置
  • Ctrl-Alt-F - 它将在只包含给定文本的行和完整视图之间切换

最后但同样重要的是,只需执行鼠标右键单击

它允许您从选定的内容创建过滤器。要将“Roaming”文本的颜色设置为蓝色,您将选择“Filter: Change Color of Lines Including [Roaming] >> Match Color”,设置颜色,您将立即拥有

过滤本身是一个相当长的概念,所以我专门用一篇 完整的文章介绍它

编辑过滤器 (高级)

从 1.4 版本开始,创建过滤器变得容易得多。更多详情请参见 此处

通常,您不需要知道如何编辑过滤器,因为从 1.4+ 开始,创建它们非常容易。您可以转到下一节,并在需要时阅读本文。

要编辑当前视图中的过滤器,请首先确保显示了过滤器窗格(如果未显示,请使用 **Alt-F** 热键将其打开)。当您拖放第一个日志文件时,它将没有任何视图。当前视图将显示所有行。此时,您需要过滤出您想在此视图中看到的哪些消息。

您可以添加任意数量的过滤器。过滤器按从上到下的顺序匹配,第一个匹配的过滤器将决定行的颜色(这也意味着过滤器是 OR 运算 - 如果任何过滤器匹配,它将在当前视图中显示)。

要添加/删除过滤器,您可以使用 **'+'** 和 **'-'** 按钮。每个过滤器可以由几行组成。每一行可以是

  • 一个需要匹配的条件
  • 关于过滤器的额外信息(例如,颜色或是否忽略大小写)
  • 一个注释(以 # 开头,将被忽略)

为了使过滤器匹配,**所有**条件都必须为 `true`。因此,在一个过滤器内,条件是 **AND** 运算。这也回答了这个问题 - 如果我希望我的过滤器进行 AND 运算怎么办?很简单,只需创建一个新过滤器,并在其中添加您想要 AND 运算的所有条件。

条件行如下

$[part-of-line] regex
$[part-of-line] [condition] [text]

$[行的一部分] 可以是以下任意一项

  • $level - 消息的类别(例如,INFODEBUGERROR 等)
  • $msg - 消息
  • $file - 消息记录的文件的来源(如果您正在记录此信息)
  • $func - 消息记录的函数的来源(如果您正在记录此信息)
  • $class - 消息记录的类的来源(如果您正在记录此信息)
  • $ctx1, $ctx2, $ctx3 - 额外上下文(取决于您的日志,您可以决定记录额外信息,例如 - 消息来自的模块)

第二个参数可以是简单的 regex。或者,

[条件] 是以下任意一项

  • = - 如果等于给定文本,则匹配
  • != - 如果不等于给定文本,则匹配
  • startswith - 如果以给定文本开头,则匹配
  • !startswith - 如果不以给定文本开头,则匹配
  • contains - 如果包含给定文本,则匹配
  • !contains - 如果不包含给定文本,则匹配
  • any - 如果文本包含给定文本中的任何子表达式,则匹配。每个子表达式由 "|" 分隔。例如:$msg any Kaspersky|Norton|Avg
  • none - 如果文本不包含给定文本中的任何子表达式,则匹配。每个子表达式由 "|" 分隔。例如:$msg none Kaspersky|Norton|Avg

额外信息行

  • color fg [bg]
  • match_color fg [bg]
  • case-insensitive

color 指定当过滤器匹配时要应用的颜色(它会为整行着色)。match_color 指定当过滤器匹配时要应用的颜色,但它只会将其应用于匹配项本身。

颜色是 **#RRGGBB** 格式,并且识别一些已知颜色。因此,您可以说“*color red*”、“*color darkred*”、“*color #ee0022*”。*从 1.2 版本开始,要设置过滤器的颜色,您还可以单击文本左侧的吸管工具,设置颜色,即可完成。更改也会立即生效!*

默认情况下,过滤器区分大小写。如果您希望它不区分大小写,只需添加一行说“case-insensitive”。

示例

case-insensitive  
$msg contains kaspersky  
$msg startswith process  
color green

这将创建一个不区分大小写的过滤器,该过滤器匹配所有以“process”开头并包含“kaspersky”的行。它将以绿色显示所有匹配的行。

最后,我添加了两个按钮:ToC / FromC(= 复制到剪贴板 / 从剪贴板粘贴)。ToC 将当前视图中的所有过滤器复制到剪贴板,FromC 将它们粘贴。假设您有一个同事,您想“发送”他您当前的视图 - 将其复制到剪贴板,发送给他。他会粘贴,然后 voilà - 他就有了和您一样的视图!

查找 (带预览)

如果您想在当前视图或完整日志中搜索,只需按 **Ctrl-F**。这是一个相当直接的对话框。

  • 它会预览您的查找在周围行中的结果 - 在创建正则表达式查找时非常有用。
  • 它会用稍深的背景标记所有包含匹配项的行,您还可以使用 **F3**/**Shift-F3** 移动到包含该文本的下一行/上一行。
  • 从 1.8+ 开始,您还可以 搜索所有列。默认情况下,此项关闭(因此,只搜索 消息 列)

这是查找以 11 开头的进程及其 PID 的外观

...以及结果

要结束查找(即取消标记所有包含该文本的行),只需按 Escape。

查找 >> 过滤 (1.8+)

从 1.8 版本开始,您可以将查找的结果转换为过滤器 - “转到过滤器”按钮。请注意,这将是

  • 一个颜色过滤器:它将使用“查找”本身的 Fg / Bg 颜色(请参阅您有一个 标记找到的单词并着色 部分)
  • 您可以调整过滤器直到满意为止,因为您可以即时预览,然后按 转到过滤器
  • 您还可以让它在所有列中搜索文本或正则表达式(搜索所有列 复选框)

窥探一下 (1.9+)

这是另一种过滤日志的简便方法。在除消息/日期/时间/行之外的任何列上,您都可以进行窥探

  • 只需单击单元格左下角存在的小向下箭头
  • 这将查看大约 100,000 行,收集所有可用的唯一值并将其呈现给您
  • 您可以选中任何值或多个值,单击 运行(这将应用过滤器),然后 voilà - 您只会过滤出包含所选值的行。

很简单!除了以上内容

  • 您可以按照相同的方式,通过任意多列进行窥探,以尽可能精确地细化窥探
  • 窥探的列将显示不同的图标,因此您可以轻松看到哪些列被过滤,哪些没有
  • 您可以轻松启用(应用)或禁用(清除)过滤器。只需将鼠标移到窥探附近,就会出现一个额外的小按钮:一个过滤器。单击它即可启用/禁用它
  • 它同时适用于视图和详细信息窗格
  • 不确定您过滤了什么?只需单击小箭头,它就会显示出来。您甚至可以修改它,重新单击 运行,它会自动重新应用。

以下是如何在第一个窥探的基础上进一步窥探(级别 = 警告或错误)

最后是结果。注意窥探的列有多容易识别

美化格式 (1.8+)

从 1.8 版本开始,Log Wizard 支持 美化格式,以帮助您轻松关注对您重要的内容。或者换句话说,让相关信息脱颖而出。

一图胜千言

  • 当前选择在第 8813 行
  • 书签在 8727 和 8784
  • 行显示得很漂亮,有点像 intelliJ
  • 注意行背景如何交替,但只有一点点,以免伤眼
  • 注意选择的背景如何稍微暗一点,足以让你知道它的位置
  • 时间:我 lets 你自己去发现 :) | ;)
  • 级别:第 8697、8854 和 8978 行是警告
  • 数字以红色显示

美化格式是一个复杂的功能,因此,我为此 写了另一篇文章

深入了解 LogWizard - 开/关开关

我开发 LogWizard 是为了向您显示尽可能多的信息 - 随时,您可以选择删除任何您不关心的杂乱信息。以下是 Log Wizard 中所有可用的窗格

  1. 左窗格 - 包含有关视图和/或日志的额外可编辑信息。通常,它  是当前视图中的所有过滤器。它允许编辑过滤器并轻松启用/禁用它们。但它也可以是其他信息(例如,关于日志的注释)。
  2. 源窗格(顶部窗格) - 包含有关日志源的信息 - 要应用于日志的模板(模板包含显示的所有视图)。这些都是高级主题 - 您很少需要更改它们。
  3. 当前视图窗格(中间窗格) - 包含当前视图。
  4. 完整日志窗格(右窗格) - 包含日志中的所有行。作为额外奖励,您会看到“视图(s)”列 - 对于每一行,它显示了匹配它的视图。当您找到一个罪魁祸首行并想查看它之前和之后发生的事情时,它可能非常有用。
  5. 详细信息窗格 - 显示当前消息的详细信息。您可以基本上指定一些列在此处可见,以防它们包含太多信息以至于在当前视图本身中无法完全可见。例如,您可以将消息放在此处,以防消息本身非常长和/或包含多行。请注意,您可以轻松编辑此处显示的信息以及显示位置。
  6. 状态 - 显示有关正在发生的事情的信息。我建议您在最初几周使用 LogWizard 时将其保持开启。之后,您可能想关闭它,以便为更重要的信息腾出更多空间。它有时也会显示提示。

您通常只会想看到一两个窗格:当前视图窗格,可能还有详细信息窗格,和/或完整日志窗格

打个招呼,切换热键

  • Alt-F - 切换过滤器窗格开/关
  • Alt-O - 切换源窗格开/关
  • Alt-L - 切换当前视图窗格/完整日志窗格(在 CV-only <-> CV/FL <-> FL-only 之间旋转)
  • Alt-D - 切换详细信息窗格开/关
  • Alt-S - 切换状态信息开/关。通常您会在此处看到有关当前日志、加载时、过滤器、搜索的信息。如果出现错误,并且您将其关闭,它将暂时自行切换回开启状态 - 以便您可以阅读错误。*从 1.6 版本开始,状态窗格还包含“操作”按钮。*

请注意,还有不少其他信息可以切换开/关 - 这样您就可以真正专注于对您重要的事情

  • Alt-H - 切换表格标题开/关(表格标题 = 显示视图中列的标题)
  • Alt-T - 切换标题开/关。如果将其关闭,我将删除标题+边框。
  • Alt-V - 切换选项卡显示开/关。您当然可以将其关闭以节省空间。如果将其关闭,当前视图的名称将显示在标题中(在消息列中)。
  • Alt-N - 切换注释窗格开/关。如果开启,您可以在日志行上写注释(以防您发现问题)。多个人可以为特定日志写注释,并且注释会自动合并!

LogWizard 在只显示 **当前视图窗格**、**标题** 和 **状态** 的情况下

热键

我是一名开发者 - 鼠标太慢了。我想尽可能多地用键盘操作 - 热键。正如我上面解释的:**'Alt-F'**、**'Alt-O'**、**'Alt-L**'、**'Alt-T'** - 切换窗格开/关。

除此之外

  • Ctrl-Tab/ **Ctrl-Shift-Tab** - 在视图(选项卡)之间导航。
  • Tab/Shift-Tab - 在窗格之间导航 - 在当前视图窗格、完整日志窗格、过滤器窗格/过滤器列表、过滤器窗格/当前过滤器(文本框)之间循环。
  • Ctrl-F/F3/Shift-F3 - 在当前视图中搜索文本
  • Ctrl-G - 转到行/时间
  • Ctrl-C/Ctrl-Shift-C - 复制到剪贴板(仅复制消息部分/整行)。
  • +/- - 增大/减小字体大小
  • Ctrl-F2 - 切换书签(标记/取消标记行作为书签)。**注意**:书签显示在所有视图中。
  • F2/Shift-F2 - 转到下一个/上一个书签
  • Ctrl-Shift-F2 - 清除所有书签。
  • F5 - 刷新当前视图
  • Ctrl-H - 切换历史记录。按一次以获取焦点到历史记录组合框,允许您选择以前的日志。再次按下以返回到您之前的位置。
  • Ctrl-O - 在 Windows 资源管理器中打开文件。
  • Ctrl-P - 打开首选项窗口。
  • Ctrl-1Ctrl-9。  它会切换到/从自定义位置 1-9。通常,所有内容都保存在您的“默认”位置。但是,您可以移动到自定义位置 - 设置(如位置/大小 + 切换)将保存到该位置。因此,您可以拥有 10 个“工作区” - 取决于您的日志文件以及您在特定时间正在做什么。

从 1.2 版本开始,复制到剪贴板也复制为 HTML。所以想通过电子邮件发送关于日志文件问题的邮件?选择行,Ctrl-C,然后粘贴到您的电子邮件编辑器中。它将保留行的颜色!

日志注释

从 1.2 版本开始,您可以为正在查看的日志创建注释。这是一个非常巨大的功能,我将 撰写另一篇文章介绍它

但长话短说,您可以为特定日志创建注释。这里的想法是标记可能存在问题的行 - 它们可能是错误,或者用户配置错误。

您想要的是找到问题的根源 - 一如既往,人越多越好!

一个常见的场景是 - 客户支持人员查看日志。他们可能会发现一些问题,然后将他们的发现传递给团队负责人。团队负责人查看注释,可能会添加自己的注释,然后将它传递给他的团队。他的团队中的每个人都可以注释(添加笔记)日志,然后他们共享他们的笔记。笔记是自动合并的。您只需将某人的笔记拖到 LogWizard 上,它们就会被导入。就是这么简单!

转到行/时间

这是标准的 Ctrl-G,但有一些额外的功能

  • 如果它是数字,我将其解释为行,并转到最接近的行(因为您当前的视图可能不包含确切的行)
  • 如果它是时间([hh:]mm:ss[.fff]),我将其解释为时间,并转到存在的最接近的时间
  • 如果它以 + 或 - 开头,我将其解释为相对于选定行。例如,'+10' 前进 10 行,'-3:5' 是 3 分钟 5 秒之前。

详细信息窗格

LogWizard 可以处理包含非常复杂信息的日志。除了日期、时间、文件/类/函数、级别、消息之外,您还可以决定记录每条消息的额外信息。完全取决于您 - 特别是 http 日志包含更多信息。

这完全没问题 - 现在,LogWizard 允许额外添加多达 15 个新列(我计划允许多达 50 个)。话虽如此,如果您有如此多的信息,它们将无法很好地适应视图 - 它们将占用彼此的空间。解决方案是将一些隐藏在视图中,并在 详细信息窗格 中显示它们。

上面的内容和听起来一样简单

  • 右键单击任何列标题 - 您将看到可用列,并且可以重新排列它们和/或显示/隐藏它们。
  • 切换 详细信息窗格 开(Ctrl-D)。
  • 默认情况下,所有额外信息都显示在第 1 行(来自详细信息窗格),第 2 行包含消息列。
  • 您可以编辑详细信息窗格并选择显示哪些列以及显示在哪里 - 右键单击它并选择“编辑描述布局”。它会非常自解释。
  • 您最多可以有 6 行,可以在其中根据需要放置信息。
  • 请注意,一列可以同时显示在视图和详细信息窗格中。这完全没问题。通常您会希望消息列也这样做。

Windows 事件日志 (1.6+)

从 1.6 版本开始,LogWizard 支持 Windows 事件日志和调试查看器日志。这里有很多可以讨论的,我为此 写了另一篇文章。现在,先讲基础。

打开 Windows 事件日志

  • 转到 操作 >> 打开日志,或 **Ctrl-O**
  • 在组合框中选择“Windows 事件日志
  • 您可以选择多个日志将它们合并为一个 - 例如,“系统”和“应用程序”日志。
  • 没有简单的方法可以知道所有 Windows 事件日志的名称。例如,在我的机器上,“**Microsoft-Windows-TWinUI/Operational**”是一个有效的名称。查找它们的方法是浏览%SystemRoot%\System32\Winevt\Logs
  • 您还可以读取远程计算机的事件日志。请注意,密码(如果您连接到远程计算机)永远不会存储 - 因此您每次重新打开日志时都需要重新输入

打开 Windows 事件日志后,您可以执行对普通日志所能做的任何操作:过滤、着色、拥有多个日志视图等等。

调试查看器 (1.6+)

您还可以让 LogWizard 作为 *调试查看器*:即,捕获应用程序使用 `OutputDebugString` 写入的任何内容。

打开调试查看器

  • 转到 操作 >> 打开日志,或 **Ctrl-O**
  • 在组合框中选择“Debug Print
  • 您可以仅过滤来自您应用程序的消息 - 只需写入您的应用程序名称,不带 `.exe` 后缀。否则,LogWizard 将捕获所有内容。

数据库支持 (1.8+)

从 1.8 版本开始,Log Wizard 可以读取常见的数据库,例如 MSSQL、Oracle、SQLite。

作为奖励 - 将 Sqlite 数据库拖放到 Logwizard 上,它会自动猜测日志表 + 日志字段

您可以测试连接,以确保它正确,然后单击 OK,打开日志。

nlog / log4net 增强支持

从 1.8 版本开始,Log Wizard 对 nlog / log4net 日志库有增强支持。当您第一次在 Log Wizard 中查看日志时,根据其语法(您如何将每个信息写入其中),有时可能很难准确描述它,以便 Log Wizard 一开始就能正确显示它。

因此,我对其进行了增强,使此过程尽可能无缝。

自动识别 nlog / log4net 语法

首先,在语法方面,Log Wizard 现在可以识别 nlog 和 log4net 的语法。或者,

所以,当您打开日志文件(Ctrl-O)时,您可以单击“编辑”,然后粘贴您的 nlog/log4net 语法。

而不是 Log Wizard 语法,例如

$time[0,' | '] $level['',' | '] $msg['']

您现在可以复制粘贴您的 nlog/log4net 语法

${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${level:uppercase=true} | ${message}
%-70file(%4line): %date{HH:mm:ss,fff} %-5level - %message%newline

但是,还有更好的……

.config 文件

Log Wizard 现在可以解析 nlog / log4net .config 文件,以自动加载其中的语法

当您将文件拖放到 Log Wizard 时,它会自动查找是否存在任何 `.config` 文件(如果找不到,它会在目录的父目录及其父目录的父目录中查找)。如果找到 `.config` 文件,它将被解析,并自动应用设置。

当您手动打开日志(Ctrl-O)时,现在可以单击“加载配置” - 在那里您可以手动选择 nlog/log4net 配置文件所在的位置。

一旦它解析了 `.config` 文件,它将尝试从中加载尽可能多的信息。此时

  • 如果是日志文件,它会查找其语法和文件名(后者并非总是可以推断,但没关系,因为您很可能拖放了文件名)
  • 如果是数据库表,它将预加载所有数据库连接信息

拖放 .config 文件

您还可以拖放 nlog/log4net `.config` 文件。此时,Log Wizard 将预加载它可以从配置文件中解析的所有信息,填写它,然后打开“打开日志”对话框。

此时,您可以检查信息是否正确,按 OK,然后就完成了 - 享受查看日志的乐趣!

拖放 Zip 文件

从 1.2 版本开始,您可以将 .zip 文件拖放到 LogWizard 上。

当您拖放 .zip 文件时,LogWizard 将查找日志文件。默认情况下,它将查找 `.log` 和 `.txt` 文件。

第一个匹配的文件将被解压缩、导入并显示。就是这么简单!

如果您想要更多控制,请在拖放时按住 Shift。这将显示一个日志文件列表 - 您 zip 文件中找到的所有日志文件及其大小。只需选择一个,LogWizard 就会显示它。

要修改解析 .zip 文件时要查找的文件,请转到首选项(Ctrl-P),然后转到 Zip 文件。

实时监控

当然,LogWizard 会不断监视文件。一旦新的信息被追加到日志中,您会立即看到它。您会看到哪些视图包含新行(除了当前视图) - 视图名称会变成粗体 - 这正是您所期望的。

如果您重写文件,LogWizard 会立即从头开始重新启动 - 因此,在调试时,您可以监视日志文件 - 而不必担心每次日志被重写。

更进一步,我添加了一个选项 - “**重写时置顶**”。如果您勾选它,当日志文件被重写时,它会将 LogWizard 放在最前面。

这样做的想法是,通常,您的 IDE 会占用您屏幕的 100%。在 Visual Studio 中调试时,您会查看输出窗口(它被停靠在某个地方)。然后,您将调整 LogWizard 的大小以覆盖 **输出窗口**,关闭 LogWizard 的标题(**Alt-T** 热键),并且每次重新启动调试时,LogWizard 都会出现在您期望的位置。

这样,在调试时,您可以轻松地关注您想要的信息。

此功能与“自定义位置”(请参阅上面的 热键)结合使用效果极佳。您有一个默认位置,您希望在那里看到您的日志(这很可能占用您屏幕的一半以上)。但是,在调试时,您需要自定义位置 1 - 它会带您到 LogWizard 应该在调试应用程序时的确切位置。

记住我的设置 / 自动保存

我让 LogWizard 自动保存您所做的一切 - 您修改的任何过滤器,您添加/删除/编辑的任何视图,所有内容都会自动保存并记住。

您显示/隐藏的每个窗格 - LogWizard 都会记住它,并在下次打开时以相同的方式显示。同样适用于您打开或关闭的任何内容,或者您移动/调整了 LogWizard 应用程序的大小。

它甚至会记住分隔符的位置!

您上次查看的日志文件默认会打开。您查看过的所有日志文件 - 都保存在历史记录中。更改设置,它会自动保存。

您只需要做的就是 - 专注于查看您的日志。

从 1.5 版本开始,您可以调整大小和/或移动列。您甚至可以重命名它们 - 所有这些都会自动保存。

硬核内容

您可能不需要知道以下内容 - 但以防万一您想知道……

LogWizard 模板 (高级)

模板决定了您看到的视图以及每个视图具有的过滤器。 默认模板的名称很无聊,叫‘Default’。但是,您可以创建更多模板来匹配不同类型的日志。

假设您处理 3 个应用程序。很可能,您会希望为每个应用程序创建一个模板(每个应用程序都有自己的视图)。

LogWizard 会尽力适应。当您打开日志文件时,LogWizard 会自动创建一个与文件名同名的模板。假设您打开文件 `Pidgin.log`。Logwizard 将创建一个名为 `Pidgin` 的模板。

您创建和编辑的每个视图,您制作的每个过滤器,都会自动保存在该模板(在此例中为 `Pidgin`)中。下次您打开此日志文件时,我们将自动重新打开 `Pidgin` 模板,并重新显示您以前创建的视图。

假设您打开一个新的日志文件 - 名为 `Yahoo.log`。LogWizard 默认会创建一个名为 `Yahoo` 的模板。同样,您可以随意创建、编辑视图。或者,假设这与您之前创建的某个模板匹配。只需打开源窗格(**Alt-O** 热键),然后从模板组合框中手动选择该模板。就是这样!

因此,如果您的 `Yahoo.log` 匹配 `Pidgin` 模板,您将选择它,然后 bam - 您将受益于您在那里保存的一切!现在,您对视图和/或过滤器所做的任何更改都保存在 `Pidgin` 模板中。并且,所有使用 Pidgin 模板的文件都将受益于此!

默认情况下,当您打开新日志时

  • 如果日志名称(不包括目录和扩展名)与任何现有模板匹配,我们将使用该模板。您可以覆盖此设置,如下面所述。
  • 如果日志文件在其标题中包含特定文本(即,在其 8192 字节中),您可以使该日志文件自动匹配某个模板。
  • 如果日志不属于以上任何一种情况,我们将创建一个新的模板,不包括目录和扩展名,然后从中开始。

第二种情况非常重要。假设您已创建 `Pidgin` 模板。但您的客户发送给您的日志文件如下:`Pidgin001.log`、`mycustomp.log`、`my29395529.log` 等等 - 但它们都是 Pidgin 日志。

因此,每次打开此类日志文件时,您都需要手动选择 `Pidgin` 模板来查看所需信息。

或者,您可以转到首选项(**Ctrl-P**),转到自动匹配模板,然后添加一行指向您的日志模板。方法如下

可能 99.99% 的时间,每个日志在其开头都会包含一些欢迎/启动消息,这些消息会间接标识日志(模板)。消息可以是 `Starting Pidgin v1.02.2334 at 24 april 2015` 或类似的形式。

您只需指定始终写入的文本(例如,`Starting Pidgin v`),即可完成。LogWizard 会自动匹配任何包含该文本的文件到您的 Pidgin 模板。为您减轻更多压力!

作为奖励,您可以将整个模板复制到剪贴板(‘ToC’)或从剪贴板粘贴(‘FromC’),以便您可以轻松地与同事共享您查看日志的方式。

日志记录语法 (高级)

在处理常规日志文件(其中一行匹配文件中的完整行)时,LogWizard 会尝试猜测其语法(该行的每个部分是什么意思)。如果猜错了,您可以手动编辑它。很简单 - 打开源窗格(**Alt-O**)并单击 编辑日志设置。或者,右键单击任何列标题并选择 编辑日志设置。然后单击 编辑

对话框将非常自解释 - 只需注意,您可以随时修改语法,按 Enter,您将在下方看到 LogWizard 解析的内容。您可以尝试错误,直到获得正确为止。然后,按“**使用它**”按钮,即可完成!

语法如下

$part-of-line1[start,end] $part-of-line2[start,end] ... $part-of-lineN[start,end] $msg[start]

$part-of-line 可以是以下任意一项

  • $msg - 记录的消息本身。这必须始终是最后一个
  • $date - 消息的日期
  • $time - 消息的时间
  • $level - 级别(INFODEBUGERRORFATAL 等)
  • $file - 消息记录的文件:行(如果您正在记录它)
  • $func - 消息记录的函数(如果您正在记录它)
  • $class - 消息记录的类(如果您正在记录它)
  • $ctx1 - $ctx15 - 有关消息的额外上下文信息(如果您正在记录它)

开始和结束可以是以下任意一项

  • 数字(行中部分开始或结束的索引)
  • 字符串(部分开始或结束的位置)。不被视为消息的一部分。

示例

"$time[0,12] $ctx1[13,10] $level[24,5] $class[' ','- '] $msg"

将正确解析此行: 

"11:06:13,944 main       DEBUG TNControls.ls_util - load_save - on_change not implemented - enable_vision"

  • time = 11:06:13,944
  • ctx1 = main
  • level = DEBUG
  • class = TNControls.ls_util
  • msg = load_save - on_change not implemented - enable_vision

历史

  • 2015年12月23日,版本 1.6.2
    • 现在可以查看 Windows 事件日志
    • 现在可以充当调试查看器(查看程序通过 OutputDebugString 写入的任何内容)
    • 用户界面更简单,程序启动时可以轻松看到可以拖放文件
    • 现在有详细信息窗格(**Ctrl-D**),您可以自定义以显示过于复杂的列,无法在行中显示(例如,多行列)。
    • 编辑日志设置 - 对话框 - 轻松编辑任何日志的设置(对于我即将添加的新日志类型很有用)
    • 状态窗格:显示提示(可在首选项中关闭)
  • 2015年11月12日,版本 1.5.3
    • 将状态窗格 + 下方窗格合并为一个(显示状态 + 一个名为“What's up”的按钮 - 该按钮显示一个菜单,其中包含以前在状态窗格中显示的命令)
    • 添加/删除 / 同步按钮 - 通常显示在视图标题顶部 - 仅当您将鼠标悬停在附近时显示
    • 处理新类型的日志(xml、csv、每行一个字段的日志)
    • 添加了别名
    • 实时监控时 - 可以使用 FindFirstChangeNotification API 监视更改
    • 从 github 获取版本信息(显示更新信息)
    • 搜索功能得到极大改进 - 具有预览功能,并保存历史记录(最近 50 项)
    • 列 - 您可以调整大小、移动、显示/隐藏它们 - 它们会自动保存,并且(默认情况下)全局应用
    • “新建”按钮效果绝佳。
    • 切换:附加过滤器 - 您可以将当前的查找应用为附加过滤器,应用于现有行(您可以切换此选项开/关)
    • 切换 - 显示所有行 - 您可以显示日志中的所有行(而不是仅显示当前视图中的行)
    • 过滤器:UI 改进(更改过滤器时,不删除所有条目并重新添加;而是,一步重置过滤器)
    • 首选项 - 您可以更改前后景色 + 允许更改字体
    • 添加了 $thread 和 $ctx4-$ctx15
    • 检测非英文字码页
    • 新行刷新速度大大加快
    • 支持鼠标滚轮
    • 添加了编辑模式,方便在日志中搜索 - 只需输入内容,它就会带您去那里!
    • 右键单击 - 通过右键单击几乎可以完成所有操作。这在您选择一些文本并右键单击时尤其有用 - 您可以从选定的内容创建过滤器!
    • 改进了 ctrl-f(如果视图中有选定内容,则使用它)
    • 改进了 f3/shift-f3 - 如果用户在视图中键入了任何内容,则使用它
    • 添加了“匹配颜色” - 仅能为您的过滤器匹配项着色(而不是整行)。这与详细信息(以防消息太长无法显示)和当前编辑行同步
    • 已解决 bug
  • 2015年10月3日 - 大量更新(1.2.3)
    • 可以在过滤器和查找中使用正则表达式
    • 可以同步当前视图到完整日志的颜色。
    • 减少了内存占用
    • 可以进行不区分大小写、全词搜索
    • 自定义位置 - 最多可以使用 5 个位置,LogWizard 会自动记住这些位置(以及切换状态)
    • 几乎所有内容都可以切换开/关。此外,切换 UI 更容易
    • 过滤器优化 - 尽可能使用缓存
    • 选择过滤器颜色更容易(吸管工具)
    • 可以为日志添加注释。多个人可以添加注释,并且它们会自动合并!
    • 也可以拖放 .zip 文件。正常拖放,将打开第一个日志文件。按住 Shift 拖放,您可以从列表中选择(如果存档中有更多日志文件)
    • 导出日志 + 注释 - 非常简单,以便其他人可以看到您在日志上做的注释(他们可以回复/添加新注释)
    • 将当前视图导出为 .txt 或 .HTML
    • 可以复制多行到剪贴板 - 自动以文本和 HTML 格式复制
  • 2015年9月2日 - 初始版本 (1.0.66)
© . All rights reserved.