C# WPF Log4Net 查看器






4.87/5 (27投票s)
Log4Net XML 日志查看器
引言
Log4Net 日志记录工具对于记录异常和调试语句非常有用。但是,需要一个好的查看器应用程序来查看日志。这里的项目是一个应用程序,允许用户打开和查看具有颜色编码背景的 log4net XML 格式输出。该应用程序完全用 C# 和 Windows Presentation Foundation (WPF) 编写。到目前为止,还没有任何 C# 版本可以查看 Log4Net 输出日志文件,因此在查看 Log4Net 日志文件以查找错误和跟踪时,这是一个很酷的实用程序。选择 WPF 用于此应用程序的原因是,首先,WPF 是新的,其次,演示编写 WPF 应用程序有多么容易,第三,测试 WPF 应用程序与 WinForm 应用程序相比有多少依赖项。

背景
这个应用程序的灵感来自 Java 版本的 Log4Net 查看器 Chainsaw。 对于我们这些没有在 PC 上安装 Java 运行时的用户来说,我认为有一个 C# 版本的查看器会很好。
要求
log4net 查看器应用程序读取并解析 Log4Net 日志记录工具生成的 XML 输出。 输出格式必须符合 log4j 架构。 要生成 log4j XML 格式输出,请将应用程序的配置设置为使用 XML 布局架构。 此配置设置位于“app.config”或“web.config”文件中。
首先,创建一个 configSections
,然后是一个 log4net
部分。 以下示例使用滚动文件附加程序和 log4j 架构布局来设置 XML 日志格式。
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net"/>
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\log\log.xml" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
布局标记 log4net.layout.XmlLayout.SchemaLog4j
告诉 log4net.dll 以 XML 格式记录。 XML 格式确保查看器应用程序可以读取输出内容。 输出内容被解析并加载到列表视图或网格视图控件中,其中包含每个日志类型的排序和背景颜色代码。 还有一个使用网格视图控件的文件拖放功能。
使用应用程序
您可以将日志文件拖放到查看区域,在本例中是 ListView
控件。 您也可以使用菜单文件打开,或者如果您之前已经打开过文件,则使用最近查看的菜单项。 菜单项刷新将重新加载当前加载的日志文件。 加载文件后,应用程序会解析日志文件中的 XML。
解析
使用 .NET XML 文本读取器解析 XML 非常简单。 XML 文本读取器读取 XML 文件中记录的每个事件,其结构如下
<log4j:event logger="MyApp" timestamp="1219434607289" level="INFO" thread="4656">
<log4j:message>Loading my data Compressed: 8,967,102
Uncompress: 117,241,190</log4j:message>
<log4j:properties>
<log4j:data name="log4jmachinename" value="myMachine"/>
<log4j:data name="log4net:HostName" value="myHost"/>
<log4j:data name="log4net:UserName" value="myUser"/>
<log4j:data name="log4japp" value="myAppexe"/>
</log4j:properties>
<log4j:locationInfo class="myClass" method="myMethod"
file="C:\myApp\myFile.cs" line="266"/>
</log4j:event>
XML 中的所有元素都经过解析并存储在名为 LogEntry
的类对象中。 每个日志事件创建一个 LogEntry
对象并将其添加到集合 List<LogEntry>
entries 中。 列表集合用作列表视图控件的数据绑定。
Log4net 包装类
此源代码 zip 中包含 log4net 帮助器包装类 log.cs 文件。 log4net 包装类提供了一些 static
方法来简化日志记录异常。 包装器 static
方法确保 log4net 配置设置正确。
以下是如何使用包装类的示例
try
{
…
}
catch (Exception ex)
{
Log.Error(ex);
}
结论
简化的应用程序异常日志记录是一件好事,但是如果您有日志查看器,那就更好了。
历史
- 2008年11月8日:初始发布
- 2009年10月14日:新版本 2.1.0.0
- 发行说明
- 新功能
- 搜索文本消息
- 错误计数仪表板
- Bug 修复
- 过滤器。