企业库日志记录提供了许多可供处理的信息。那么,在开始更改配置之前,也许一些开箱即用的设置可以让你做你想做的事?
在我看来,您希望您的应用程序在启动期间记录一些消息,然后不再记录任何消息。我假设您明确知道何时完成记录启动消息。
如果上述情况属实,我认为最简单的方法是使用 LogEntry Priority 属性。
在配置文件中设置一个优先级过滤器,最小优先级为 2:
<logFilters>
<add minimumPriority="2" maximumPriority="2147483647" type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.PriorityFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null"
name="Priority" />
<add enabled="true" type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.LogEnabledFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null"
name="LogEnabled Filter" />
</logFilters>
然后在启动期间使用 2(或更高)的优先级来记录您的消息。然后当你知道你已经完成时,将优先级设置为 1。
我会更好地封装它,但代码示例如下所示:
public class MyApp
{
public static int LogPriority = 2;
public static readonly string MyAppCategory = "MyAppCategory";
static void Main()
{
Logger.Write("Loading 1...", MyAppCategory, LogPriority);
// ...
Logger.Write("Loading 2...", MyAppCategory, LogPriority);
// Done loading so turn off logging
LogPriority = 1;
Logger.Write("Message not logged", MyAppCategory, LogPriority);
}
}
现在,如果您想为应用程序的其余部分打开日志记录,只需将优先级过滤器从 2 降低到 1,所有内容都会被记录。