我想从自定义附加程序的log4net.Core.LoggingEvent
内部Append
方法中的对象获取自定义数据log4net
。
public sealed class SimpleAppender : AppenderSkeleton
{
protected override void Append(LoggingEvent loggingEvent)
{
// How can I receive my data?
}
}
我知道log4net.Core.LoggingEvent
包含Properties
财产。它有类型log4net.Util.PropertiesDictionary
。记录器或附加程序可能会将其他属性附加到特定事件,但我不确定这是否是我正在寻找的方式。我需要到testId
这里。我testId
在方法标记[TestInitialize]
属性中创建了它。
public class UnitTest1
{
public TestContext TestContext { get; set; }
[TestInitialize]
public void Initialize()
{
Guid testId = Guid.NewGuid();
}
[TestMethod]
public void TestMethod1()
{
ApplicationLogger.LogInfo("TestMethod1 has started.");
}
}
ApplicationLogger
class 是一个简单的log4net
记录器包装器,它将结果打印到控制台。我知道我可以做这样的事情。
ApplicationLogger.LogInfo("Test message", testId);
public static class ApplicationLogger
{
private static readonly log4net.ILog log4netLogger;
public static void LogInfo(Guid testId, string infoMessage)
{
ApplicationLogger.log4netLogger.Info(new LogMessageModel
{
Text = infoMessage,
TestId = testId
});
}
}
但是我不想在每次需要记录某些内容时都设置testId
方法LogInfo()
。还有其他更优雅的方式吗?提前致谢。