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

LogWizard - 聊聊您的日志!

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (2投票s)

2015年10月14日

GPL3

13分钟阅读

viewsIcon

11980

downloadIcon

365

以前所未有的方式创建和共享关于您日志的笔记!

 

引言

分析日志通常很麻烦。它会让你脱离编码,迫使你浏览数十万行日志,找出导致客户(远在千里之外)出现那个恼人错误的根本原因。

深入研究日志并非易事。要弄清问题的根源,有时需要团队协作。你需要一个工具,允许多个人针对特定的日志进行批注和回复。隆重推出 LogWizard —— 这就是它的一个功能!

背景

我创建 LogWizard 是为了帮助那些真正需要分析日志以追踪错误和/或发生在别处(例如客户机上)的问题的人。

我已经在 另一篇文章 中介绍了如何使用它,并且更多文章即将推出。本文重点介绍 Notes

正如你将看到的,编写和回复笔记非常容易。我特意设计成这样,因为除非它非常简单,否则你不会使用它——如果它不简单,我 selber也不会使用!

场景

  • 仅供自己使用的笔记 - 你可以仅供自己使用。也许你在分多次“会话”来分析一个非常复杂的日志——你可能需要在几天后回来,并从上次中断的地方继续。
  • 与同事共享 - 你和你的同事都可以创建笔记。你可以回复你同事的现有笔记,和/或删除笔记。
  • 与客户支持共享 - 你可以让客户支持人员先查看日志,然后他们可以将他们的发现与你和团队共享。这将为你节省处理常见问题的细节——这些问题他们应该能够识别。或者,至少,他们可以与你分享他们对问题的看法。
  • 与客户共享 - 你可以与客户共享你的发现。例如,假设 AERO 必须开启才能使你的程序正常运行,但从你的日志中可以清楚地看出,你的客户并非如此。只需在你指定的 AERO 关闭的行上添加一条笔记,例如“请开启 AERO 以便 XYZ 正常工作”。

正确地与客户共享信息可以非常有力量。你可以通过两种方式进行:

  • 仅导出笔记。它们将被导出为漂亮的 .html 文件。
  • 导出笔记和日志。他们将能够看到与你看到的完全一样的日志,以及笔记。在与客户保持透明方面,这说明了很多问题。你可能很少需要这样做——因为会有很多客户不感兴趣的信息。但是,如果他们要求,为什么不呢?

入门

如果你想随意试用一下,我提供了一些示例日志。你可以在 %appdata%\LogWizard\Samples 中找到它们。你可以将其中一个拖到 LogWizard 上,显示 Notes Pane (Alt-N),然后随意添加/编辑笔记。

注释

在我继续之前:LogWizard 的核心是 View。一个 View 由多个过滤器组成,允许你一次专注于一个特定问题。

你所做的每一条 Note 都与特定 View 中的一行相关。或者,它是对现有 Note 的回复。
回复会得到很好的格式化,这样你就可以直观地看到谁在回复什么。

创建笔记非常简单

  •  1. 导航到要添加笔记的行。
  • 2a. 要么右键单击该行,选择 Note >> Create Note On This Line,要么
  • 2b. 确保 Notes Pane 已打开(如果未打开,请使用 Alt-N 打开)。按 Tab 直到到达左下角的编辑框。根据你可见的页面,这可能需要按一到两次 Tab 键。
  •  3. 输入你的笔记,然后按 Enter。就是这样!

当你浏览日志时,你会发现 Notes Pane 与你当前的行和视图同步。

在你创建笔记后,你会发现在 Line 列会显示你的作者首字母。默认情况下,我通过查看你的 Windows 用户名来查找作者姓名+首字母(用于标识你在笔记中的身份)。如果你想更改它们,只需转到 Preferences (Ctrl-P),Notes 选项卡,然后根据需要进行更改。

分享你的日志

所以,你已经创建了几条笔记。耶!现在你想与他人共享(例如,通过电子邮件发送给你的同事),请单击底部的 Export。选择 Export Log + Notes (to .LogWizard file)

LogWizard 会创建两个文件,一个以 .long.LogWizard 结尾,一个以 .short.LogWizard 结尾,并自动在 Windows 资源管理器中打开它们。选中了 .long.LogWizard 文件。

  • .long 文件包含日志 + 你创建的笔记,而
  • .short 文件仅包含笔记。

当你与同事之间共享日志和笔记时,你只需要与某人共享一次 .long 文件——当他们打开它时,他们将在本地拥有日志文件。

之后,你只需要共享 .short 文件,其中包含你最新的笔记——当有人打开它时,它会自动合并笔记。

合并工作流

如上所示,第一个评论日志的人将创建一个 .long.LogWizard 文件。假设那个人是你,然后你将它与团队的其余成员共享。

在你共享 .long.LogWizard 文件时,你是否创建了任何笔记并不重要。你之前和之后创建的所有笔记都会自动与你的同事合并。

任何想查看日志的人都会双击 .long.LogWizard 文件——这会打开日志(使用 LogWizard),连同你的初始笔记(如果有),他们就可以开始创建笔记了。

一旦你创建了有意义的笔记,你想与同事共享它们。因此,你单击 Export,选择 Export Log + Notes...,选择 .short.LogWizard 文件,然后共享它(通过电子邮件,或你选择的其他共享工具)。你的同事也会这样做。

要查看你同事创建的笔记,请打开他们发送给你的 .short.LogWizard 文件。就是这样——合并是自动完成的。如果有什么新的内容,Notes Pane 会自动打开,新行会以较深的背景色显示。

删除笔记

如果你意识到某个笔记没有用(或者已被另一个笔记取代),你可以随时删除它。这将减少混乱——其理念是始终能够专注于重要的事情。如果你看到某人的笔记不再相关,你可以

  • 回复该笔记,解释为什么该笔记不再相关。
  • 除此以外,你还可以删除原始笔记(这将删除你的笔记——但没关系,请参阅下文)。

要删除笔记,只需选择该笔记(在左上角的窗格中),然后按 DEL

删除笔记实际上并不会真正删除它。我想创建一个简单的共享信息的方法,而就笔记而言,你需要记住的是,你不会在日志中需要很多笔记。也许如果这是一个非常困难的日志,你可能需要输入 150-200 条笔记。这在存储方面算不了什么。

因此,我从不真正删除笔记。这带来了另一个非常重要的副作用。**无需** Undo。你不小心删除了一个笔记?不用担心——只需勾选 Show Del Notes,重新选择它,然后再次单击 DEL——它就会被恢复。

在删除笔记方面,任何人都可以删除任何东西:这取决于你对同事的信任——没有人会无缘无故地删除某样东西。

导出笔记给客户

当你和你的同事分析完日志后,你可以将笔记传递给你的客户支持。如果是 Bug,你和你的同事将决定何时/是否修复它。如果是在客户机上的配置错误问题,客户支持可以选择导出这些笔记,并最终提供更多详细信息。

导出笔记非常强大——客户实际上可以看到导致你们评论的原始行——如果他们真的想,他们可以与他们发送给你的原始日志进行核对。

要注意的一件非常重要的事情是,导出会考虑 Show Del Lines 的值——如果勾选了它,则已删除的行也会被导出。如果你正在为客户导出,你可能会想取消勾选它。

此外,客户支持可以检查每条评论的语言——因此,在说话时要注意你的语言。它可能会到达客户那里!客户支持可以进一步删除某些行,最后,将它们作为漂亮的 .html 文件发送给客户。

客户支持

当出现问题/Bug 时,客户会将日志发送给客户支持。他们可以将日志转发给你,或者在 Jira(或类似工具)中创建一个 Bug,附加日志,然后将 Bug 的链接转发给你。

你也可以训练他们查看日志,并发现

  • 常见场景
  • 非同寻常的场景

对于常见场景,他们甚至可以自己解决,而无需打扰你。发现非同寻常的场景需要经验。一旦客户支持查看了足够多的日志,他们就会本能地发现一些非同寻常的事情(并通过在他们认为可疑的行上创建一些笔记来告知你)。即使他们猜错了,那也没关系——你只需要让他们知道,他们认为非同寻常的问题实际上并非如此。

在分析完日志后,你还可以与客户支持共享你的发现(即笔记)。如果这是客户机上的配置错误问题,他们就可以从中学习(在日志中的什么位置),以后在其他客户身上发现相同的问题。

培训客户支持不必很难。你只需要让他们在查看日志文件时更容易找到常见场景。这意味着 创建 View 来专门为他们量身定制。你可以创建一个包含大多数常见场景的 View——他们会查看它,看看是否能发现什么。例如,最简单的 View 就是一个包含 Warnings、Errors、Fatal Errors 的 View,大致如下:

你的视图与同事的视图(进阶)

正如我之前所说,LogWizard 的核心是 View 的概念——它是一系列过滤器的集合。创建 Views 超出了本文的范围——只需 阅读本文 以获取更多详细信息。

在查看日志时,你和你的同事可以对其有不同的 View:你可以创建自己的 View——专注于当前对你重要的内容,他们也可以创建自己的 View——专注于他们的任务。

只需记住,每条笔记都与一行和一个 View 相关。如果你没有某人创建笔记的 View,LogWizard 会自动打开 Full Log 窗格(显示完整的日志,没有任何过滤器)并选择该行。

大多数情况下,你会希望你的 Views 与你的同事保持同步(或者至少,是常用的 View)。有几种方法可以实现这一点:

让团队中的某个人创建所有 View,然后与团队其余成员共享。

  • 打开你应用程序的任何日志。
  • 创建 Views。 阅读本文
  • 共享模板(见下文)。

你可以轻松地共享 Views 和/或 Templates(Template 是日志所有 Views 的集合)。

要共享 Template

  • 打开 Source Pane (Alt-O)。
  • 单击 ToC。这将把 Template 复制到剪贴板。
  • 你可以将剪贴板的内容发送给其他人。

要使用他人共享的 Template

  • 你需要将其复制到剪贴板。
  • 打开 Source Pane (Alt-O)。
  • 选择要复制到的 Template(或简单创建一个新的 Template)。
  • 单击 FromC。这将从剪贴板粘贴 Template。

要共享 View

  • 选择相应的选项卡。
  • 打开 Filters Pane (Alt-F)。
  • 单击 ToC。这将把 View 复制到剪贴板。
  • 你可以将剪贴板的内容发送给其他人。

要使用他人共享的 View

  • 你需要将其复制到剪贴板。
  • 选择要复制到的 View(或简单创建一个新的 View)。
  • 打开 Filters Pane (Alt-F)。
  • 单击 From。这将从剪贴板粘贴 View。

一旦你拥有日志的正确 Template,你就可以进一步调整它——修改 Views 和/或创建新的 Views 来匹配你当前正在处理的内容。这完全没问题——如果 LogWizard 找不到某个笔记的 View,它只会打开 Full Log 窗格并向你显示该笔记所在的行。

默认情况下,当你打开一个 .LogWizard 文件时,LogWizard 会查找与该日志对应的 Template

  • 如果它在本地找到它,它就会使用它。因此,默认情况下,它总是使用你的 Template。
  • 如果它找不到,它将使用 .LogWizard 文件中的那个。每次你导出到 .LogWizard 文件时,我们也会导出你的 Template。这样,任何打开 .LogWizard 文件的人都会看到导出者 Template(包含所有 Views)。

万一你有一个与该日志对应的 Template,但想查看导出笔记的同事的 Template,请在拖放 .LogWizard 文件时按住 SHIFT 键。

唯一标识日志(进阶)

当你打开一个 .LogWizard 文件时,我需要找出它关联的日志以及你是否已经本地拥有它。后者不太重要,因为我可以重新复制日志到本地。

然而,唯一标识日志的原因是为了能够自动合并你的笔记(如果有)与你正在打开的 .LogWizard 文件中的笔记。

我有两种方法可以唯一标识日志文件:

  • 快速:读取文件开头 16KB + 文件末尾 16KB + 包括文件大小,然后生成 md5 哈希。
  • 100% 准确:生成整个文件的 md5 哈希。

快速算法通常就能满足你的需求,但以防万一你确实需要绝对准确,请使用另一种方法(这当然慢得多,特别是对于大型日志)。要进行编辑,请转到 Preferences (Ctrl-P),Notes 选项卡,然后进行更改。

历史

  • 2015年10月14日 - 初始版本

 

© . All rights reserved.