![]() |
1
14
如果这样的超基本方法在功能上足以满足您的需求,那么您可以坚持使用它。但是,你可能会问自己一些问题来确保:
如果您决定您有其他需求,那么有许多免费的日志框架,例如 NLog or log4net 这有助于记录更详细的日志,并且有几个商业产品,例如 GIBRALTAR 和 SmartInspect 有助于日志管理和分析。 |
![]() |
2
13
如前所述,nlog和log4net都是很好的日志框架。正如Jeff上面提到的,System.Diagnostics也是一个合理的选择(不仅仅是记录到事件日志)。尝试给我的答案增加一些价值,而不仅仅是重复已经说过的话,你可以增强你的系统。 TraceSources 使用免费的 Ukadc.Diagnostics library from codeplex . 使用tracesources,您可以创建“命名记录器”,类似于在nlog和log4net中如何创建。这些跟踪源可以配置为在特定级别记录(每个跟踪源不同),并且可以发送到不同的目标(跟踪侦听器)。所有跟踪源都可以记录到同一个监听器,或者有些可以记录到某些监听器,而另一些可以记录到其他监听器。任何跟踪源也可以发送到多个跟踪侦听器。 下面是如何在代码中使用tracesources(假设tracesource“abc”已在app.config文件中配置为记录“info”和更高优先级的消息,并且已配置为记录到文件“log.txt”)。
与“普通”跟踪源相比,UKADC.diagnostics的一个巨大好处是,您可以配置nlog/log4net样式的输出格式,这样您就可以对日志输出中显示的字段和格式有更多的控制。 从nlog/log4net中有三个非常有用的东西在系统中不可用。诊断是:
层次式记录器意味着您可以配置“祖先”记录器,任何“后代”记录器都将继承这些设置。例如,假设您有一个类的完全(命名空间)限定类型名为Namespace1.Namespace2.Class。使用nlog/log4net,您可以为“namespace1”配置日志信息(级别、目标),如果您基于namespace1中任何类型的完全限定名请求日志记录器,它将继承namespace1的设置。通过查看 Castle implemented their TraceSource-based logging 抽象化。特别是,查看初始化函数。它非常容易工作(在您自己围绕tracesource的薄包装中),而且作为一个附带的好处,它使您的tracesource的配置稍微容易一点,因为您不必单独配置每个tracesource。请注意,通过配置一个名为“”的跟踪源,您可以轻松地添加具有“根”配置的功能。 “并在Castle方案中添加一些代码以默认到” “如果未找到实际祖先,则配置。例如,您可以将“*”配置为登录,例如verbose,然后具体地将某些跟踪源(按类或按命名空间)配置为关闭或处于不同的级别。如果没有层次记录器,要对tracesources执行相同的操作,需要配置每个tracesource以在verbose中所需的“verbose”登录。 当我谈论了很多关于类和名称空间的记录器时,nlog、log4net和tracesources都允许您将记录器名称定义为任意字符串。因此,您可以按功能区而不是按命名空间/类冷定义记录器层次结构:
因此,您可以打开“Amazon”日志和所有Amazon资料日志(不必显式配置每个“子”跟踪源),而数据库资料不会。或者,你可以打开亚马逊和亚马逊,关闭电子设备,只有亚马逊,书籍(和儿童)才能登录。 最后,如果您使用nlog或log4net,值得一提的是,nlog刚刚发布了一个新版本,nlog 2.0(beta版)。 |
![]() |
3
2
|
![]() |
4
1
是的,您可以考虑System.Diagnostics。只要您不编写大量事件,Windows事件日志的优势就是管理员可以在一个位置查找所有应用程序中的所有事件。 下面是一些VB.NET代码,可以帮助您决定走这条路:
|
![]() |
5
0
我使用公共变量和计时器将新行附加到txt文件。 例如。
|
![]() |
Karl · 如何引发PrintPage的事件? 2 年前 |
![]() |
Daniel · LINQ从列表的dataTable中提取部分匹配 3 年前 |
![]() |
limelatte · 如何在datagridview中屏蔽特定列? 3 年前 |
![]() |
Orsi · 选择嵌套列表的最大值和最小值。网 3 年前 |
![]() |
D T · 如何为Excel Com设置公式? 3 年前 |
![]() |
Lenin · 将数组中的每个元素与另一个数组中的相应元素相乘 3 年前 |