我正在寻找一种方法来缩进我的日志记录语句。 经过一番谷歌搜索并搜索SO后,我在我的包装器中为log4net实现了一个Indent类来处理缩进我的记录器语句。
现在我需要调用thees方法来增加和减少缩进。
_logger.Indent.Increase();
_logger.Debug(msg);
...
_logger.Indent.Decrease();
但是在每个函数中都有这两个额外的行等等会不必要地污染代码。是否有一些语法糖果方式以更好的方式做到这一点,或者我应该以完全不同的方式做到这一点?
无论如何这会很好! :P
_logger.Debug(msg)++; //Increase indent for this logger statement and all to come.
_logger.Debug(msg)--; //Decrease Indent and logg...
答案 0 :(得分:2)
您可以为记录器本身定义++
和--
运算符,分别增加和减少缩进,并Debug
(和Warn
,{{1}同样返回记录器,然后你可以使用更好的,(但由于预增量中的括号可能不完美)语法:
Error
对我来说这更有意义,因为使用pre [[| dec] rement运算符你会说“[inc | dec]缩进缩进,然后记录一条消息”,并且后[[| | dec] rement运算符意味着“记录消息然后 [inc | dec]来缩进缩进”。
这样做还允许您使用以下方法调整增量:
// Increment the indent, then log a message
(++_logger).Debug(msg);
// Log a message then decrement the indent
_logger.Debug(msg)--;
您还可以按如下方式定义新类:
++_logger;
--_logger;
然后你可以这样做:
public sealed class LogScope : IDisposable
{
private readonly Logger _logger;
public LogScope(Logger logger)
{
_logger = logger;
++_logger;
}
public void Dispose()
{
--_logger;
}
}
答案 1 :(得分:0)
如果让Debug函数返回记录器Indent对象,并且在Indent类中你有++和 - 的静态隐式运算符,你可以这样做。这是你的意思吗?