C# 企业库日志记录-如何在运行时获取配置的日志记录级别?

C# 企业库日志记录-如何在运行时获取配置的日志记录级别?,c#,logging,enterprise-library,C#,Logging,Enterprise Library,我们使用Enterprise Library 4.1进行日志记录(以及异常处理/加密) 有人知道在运行时确定已配置日志记录级别的好方法吗?我已经编写了一个LogUtility类来进行日志调用,并按照以下示例进行调用: LogUtility.LogVerbose( string.Format("Processing event {0}", currentEvent.EventIDImported), MethodBase.GetCurrentMethod().Name,

我们使用Enterprise Library 4.1进行日志记录(以及异常处理/加密)

有人知道在运行时确定已配置日志记录级别的好方法吗?我已经编写了一个LogUtility类来进行日志调用,并按照以下示例进行调用:

LogUtility.LogVerbose(
    string.Format("Processing event {0}", currentEvent.EventIDImported), 
    MethodBase.GetCurrentMethod().Name, 
    this.GetType().Name
);
我知道除非在app.config中将日志记录级别设置为适当的级别,否则它实际上不会被记录到文件中。但我并不想计算方法参数,即方法和类型名,在某些情况下,还需要记录实际字符串,除非绝对必要

这似乎是一个合理的担忧吗?我们的应用程序可以有数千万次迭代和记录点。如果可能的话,我希望根据配置的日志级别设置一个标志,并在进行上述方法调用之前进行检查


编辑-我想根据上面的例子,我可以硬编码方法并在每次调用中键入名称。但我仍然想知道是否有办法确定级别。

对于给定类别,您可以执行以下操作:

logWriter.TraceSources["category"].Level

我真的不想要那种方法 参数,即方法和类型 姓名,在某些情况下还包括实际姓名 正在记录的字符串,待评估 除非绝对必要

基于以上,我认为您应该看看
LogWriter
的方法。它将让您确定是否将根据当前配置记录
LogEntry
,并且您可以(希望)避免创建不需要的对象

要从Enterprise Library 4.1中借用代码,请执行以下操作:

由于您正在使用自己的
LogUtility
类,您可能希望在
LogUtility
上创建一个名为
shouldllogverbose
isverbosenabled
的静态属性,并且在该属性内部使用一个“正确”构造的
LogEntry
(用于您的应用程序)以确定是否将记录该消息。e、 g

if (LogUtility.IsVerboseEnabled)
{
    LogUtility.LogVerbose(
        string.Format("Processing event {0}", currentEvent.EventIDImported), 
        MethodBase.GetCurrentMethod().Name, 
        this.GetType().Name
    );
}

这确实是一个合理的担忧。谢谢你为我指明了正确的方向;这正是我想要的。我本打算按照您的描述创建一个静态属性,但不确定如何获得布尔值——“ShouldLog”是我想要的。
if (LogUtility.IsVerboseEnabled)
{
    LogUtility.LogVerbose(
        string.Format("Processing event {0}", currentEvent.EventIDImported), 
        MethodBase.GetCurrentMethod().Name, 
        this.GetType().Name
    );
}