我需要一个Log4net包装器 - 在大型应用程序中暴露给许多不同的组件.我显然希望在记录时保留类和方法名称,但我不会将类型等传递给我的包装器.
我已经看到它在另一个问题中用smt 完成,如下所示:
MethodBase methodBase = new StackTrace().GetFrame(1).GetMethod();
this.log.Debug(methodBase.Name + " : " + message);
Run Code Online (Sandbox Code Playgroud)
这并不理想,因为它没有使用开箱即用的Log4Net功能.
我想知道人们在做切线之前是如何做到这一点的,然后想出一些非常复杂的东西.任何指针(链接/资源/样本)赞赏!
我为log4net创建了ac #wrapper.
它有Debug()和Error()方法.
我想记录记录记录的方法名称,但是如果我尝试使用%方法转换模式,它只打印Debug,它是包装器方法名称.
有没有办法打印完整的方法堆栈?
例如
而不是Debug - > SomeLoggingActionInSomeClass.Debug?
包装类代码:
public static class Logger
{
private static ILog _log;
static Logger()
{
log4net.Config.XmlConfigurator.Configure();
_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
public static void Init()
{
}
public static void Debug(string message)
{
_log.Debug(message);
}
Run Code Online (Sandbox Code Playgroud)
调用类代码:
W6CustomizationLogger.Logger.Debug("Backup(): START");
Run Code Online (Sandbox Code Playgroud)