ロガー自体に定義された++
and--
演算子を使用して、それぞれインデントを増減し、(Debug
およびなど)ロガーも返すようにすると、より適切なものを使用できます(ただし、括弧内の括弧のために完全ではない可能性があります) pre-increment)構文:Warn
Error
// Increment the indent, then log a message
(++_logger).Debug(msg);
// Log a message then decrement the indent
_logger.Debug(msg)--;
私にとってこれは、pre- [inc | dec] rement演算子を使用して、「[inc | dec]インデントを減らしてからメッセージをログに記録する」と言っていることと、post- [inc|dec]を使用することで少し意味があります。 rement演算子は、「メッセージをログに記録してから[inc|dec]インデントを減らす」ことを意味します。
これを行うと、次を使用して増分を調整することもできます。
++_logger;
--_logger;
次のように新しいクラスを定義することもできます。
public sealed class LogScope : IDisposable
{
private readonly Logger _logger;
public LogScope(Logger logger)
{
_logger = logger;
++_logger;
}
public void Dispose()
{
--_logger;
}
}
次に、次のことができます。
_logger.Debug("This message is not indented");
using (new LogScope(_logger))
{
// Anything logged within the using block will be indented
_logger.Debug("This message is indented");
using (new LogScope(_logger))
{
// LogScopes can be nested such that logging here will be double-indented
_logger.Debug("This message is double-indented");
}
_logger.Debug("This message is back to single-indent");
}
// Logging here will revert to the original indent
_logger.Debug("This message is not indented");