如何完全禁用记录器
How to completely disable the logger
我知道这个 post 禁用 log4net 记录器:Whosebug: How to completely disable log4net。
但我想知道当我使用这样的代码时,记录器是否真的处于非活动状态:
log.debug("some debug text");
我想到了一个额外的解决方案,可以在配置文件中设置类似配置开关的东西 (app.config),这会指示我的程序省略或使用源代码的一部分进行输出日志记录,例如:
即在我的 app.config
<appSettings>
<add key="enableLog" value="true"/>
</appSettings>
然后在源代码中:
...从配置中确定值并将其放入局部变量中并...
if (enableLog) log.debug("some debug text");
你怎么看,我需要这样的解决方案来提高性能还是一个愚蠢的想法?
鉴于您正在考虑使用 app.config 设置...我想您会发现 log4net 无论如何都会提供类似的选项。您始终可以通过设置日志级别来检查您在 log4net 配置中控制的 IsDebugEnabled 标志。
if (Log.IsDebugEnabled)
Log.DebugFormat("My text");
您也可以使用过滤器来阻止所有日志记录。
像
<filter type="log4net.Filter.DenyAllFilter" />
希望对您有所帮助。
这正是 log4net 已经在做的事情。当你打电话给
log.debug("some debug text");
它在内部检查 log4net.xml 配置文件
<log4net threshold="OFF" /> //it could also be ALL, DEBUG, INFO etc..
如果它被关闭,它将不会继续记录。
在我看来,没有必要进行这样的优化,因为 log4net 已经做到了。我不会说额外的检查层会显着提高性能。这取决于您的应用程序是什么以及 1 毫秒是否至关重要。我还可以说 log4net 已经非常优化了,我从来不需要对我的项目进行这样的优化。
我知道这个 post 禁用 log4net 记录器:Whosebug: How to completely disable log4net。
但我想知道当我使用这样的代码时,记录器是否真的处于非活动状态:
log.debug("some debug text");
我想到了一个额外的解决方案,可以在配置文件中设置类似配置开关的东西 (app.config),这会指示我的程序省略或使用源代码的一部分进行输出日志记录,例如:
即在我的 app.config
<appSettings>
<add key="enableLog" value="true"/>
</appSettings>
然后在源代码中: ...从配置中确定值并将其放入局部变量中并...
if (enableLog) log.debug("some debug text");
你怎么看,我需要这样的解决方案来提高性能还是一个愚蠢的想法?
鉴于您正在考虑使用 app.config 设置...我想您会发现 log4net 无论如何都会提供类似的选项。您始终可以通过设置日志级别来检查您在 log4net 配置中控制的 IsDebugEnabled 标志。
if (Log.IsDebugEnabled)
Log.DebugFormat("My text");
您也可以使用过滤器来阻止所有日志记录。 像
<filter type="log4net.Filter.DenyAllFilter" />
希望对您有所帮助。
这正是 log4net 已经在做的事情。当你打电话给
log.debug("some debug text");
它在内部检查 log4net.xml 配置文件
<log4net threshold="OFF" /> //it could also be ALL, DEBUG, INFO etc..
如果它被关闭,它将不会继续记录。
在我看来,没有必要进行这样的优化,因为 log4net 已经做到了。我不会说额外的检查层会显着提高性能。这取决于您的应用程序是什么以及 1 毫秒是否至关重要。我还可以说 log4net 已经非常优化了,我从来不需要对我的项目进行这样的优化。