c# – 不调试时的Log4Net消息构建成本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 不调试时的Log4Net消息构建成本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2171字,纯文字阅读大概需要4分钟。
内容图文
![c# – 不调试时的Log4Net消息构建成本](/upload/InfoBanner/zyjiaocheng/763/6094c22c0b0748c9bfc8c7bded785af7.jpg)
根据this log4net文章,您应检查是否在任何Log.Debug语句之前启用了调试以消除语句构造成本.是否有更好的替代方法,总是必须在任何日志语句之前检查是否(Log.IsDebugEnabled)?
Log4Net示例:
if (log.IsDebugEnabled)
{
log.Debug("This is entry number: " + i );
}
我不想支付语句构造的开销成本,但也不想在每个日志语句之前检查.
解决方法:
but also don’t want to check prior to every log statement
当你发现自己一遍又一遍地重复相同的代码时,听起来像是一个普通的抽象可能是有序的.在这种情况下,您可以为Log4Net创建自定义包装器.简单的事情:
public static class Logger
{
private static ILog _log;
static Logger()
{
log4net.Config.XmlConfigurator.Configure();
_log = log4net.LogManager.GetLogger("Log4Net");
}
public static void Debug(string message)
{
if (_log.IsDebugEnabled)
_log.Debug(message);
}
public static void Info(string message)
{
_log.Info(message);
}
public static void Warn(string message)
{
_log.Warn(message);
}
public static void Error(string message)
{
_log.Error(message);
}
public static void Error(string message, Exception ex)
{
_log.Error(message, ex);
}
public static void Fatal(string message)
{
_log.Fatal(message);
}
public static void Fatal(string message, Exception ex)
{
_log.Fatal(message, ex);
}
}
在这种情况下,我使记录器实例静态.我不是百分百肯定会一直按预期工作.通常我在依赖注入框架后面使用它,并将logger依赖项配置为单例,由框架处理.您可以使用实例方法将其设置为实例类,并将其放在静态工厂类之后.根据需要进行测试和调整.
这里有几个额外的好处:
>您在Log4Net中的依赖关系被隔离到一个类.因此,如果您想使用其他记录器,则只需更改一个类而不是整个项目中的所有内容.
>您可以轻松地在依赖注入器后面抽象它.
>您希望包含在所有日志记录语句中的任何其他常用功能都可以轻松地全局包含在此处.
我通常用于第三个好处的一个例子可能是这样的:
private static string GetLocation()
{
var frame = new StackTrace(1).GetFrame(1);
var method = frame.GetMethod();
return string.Format("{0}:{1}.{2}({3})", Environment.MachineName, method.ReflectedType.FullName, method.Name, frame.GetFileLineNumber().ToString());
}
这从运行时系统获得了更有意义的调试信息(尽管可能存在性能损失,对于大批量系统而言,值得测试).所以我的传递错误记录功能可能如下所示:
public void Error(string message, Exception ex)
{
_log.Error(string.Format("{0}:{1}", GetLocation(), message), ex);
}
内容总结
以上是互联网集市为您收集整理的c# – 不调试时的Log4Net消息构建成本全部内容,希望文章能够帮你解决c# – 不调试时的Log4Net消息构建成本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。