我已经将Log4net包装在静态包装器中并想要记录
loggingEvent.LocationInformation.MethodName
loggingEvent.LocationInformation.ClassName
Run Code Online (Sandbox Code Playgroud)
然而,我得到的只是我的包装器的名称.
如何使用forwardingappender和静态包装类来记录该信息
Logger.Debug("Logging to Debug");
Logger.Info("Logging to Info");
Logger.Warn("Logging to Warn");
Logger.Error(ex);
Logger.Fatal(ex);
Run Code Online (Sandbox Code Playgroud) 我正在为log4.net实现一个自定义XML格式化程序
public class ISDSApplicationEventsLayout : XmlLayoutBase
{
protected override void FormatXml(...)
{
//Location Info
writer.WriteStartElement("Method");
writer.WriteString(**loggingEvent.LocationInformation.MethodName * *);
writer.WriteEndElement();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是......现在当我从日志包装器类调用log方法时...称为日志记录
public static void logEvent(string message)
{
log.Info(isdsLog);
}
Run Code Online (Sandbox Code Playgroud)
我得到输出....
<Method>logEvent</Method>
Run Code Online (Sandbox Code Playgroud)
如何使用名为logEvent的方法名称而不是logEvent作为方法名称?
谢谢
问题更新:
如果上面这看起来有点复杂 - 我真正要问的是:你如何保留在log4net中调用包装日志功能的方法的上下文...
示例...方法doWork()...调用 - >日志包装器 - >调用log4net ....
你如何使methodname = doWork和NOT日志包装函数....
我为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) 我写了一个简单的log4net包装器.我想知道这个包装器代码是否可以改进.
我有点担心每个日志功能(信息,警告等)中引入的反射代码以获取调用函数名称.是否因此存在任何可能的性能问题?
namespace Acqueon.Pacer.Core.Helpers
{
#region Imports
using System;
using System.Diagnostics;
using System.Reflection;
using log4net;
#endregion
/// <summary>
/// log4net Log helper
/// </summary>
public sealed class Logger
{
#region Constants and Fields
/// <summary>
/// Determines whether the DEBUG Mode is enabled.
/// </summary>
private readonly bool isDebugEnabled;
/// <summary>
/// The is error enabled.
/// </summary>
private readonly bool isErrorEnabled;
/// <summary>
/// Determines whether the FATAL Mode is enabled.
/// </summary>
private readonly bool isFatalEnabled;
/// <summary> …Run Code Online (Sandbox Code Playgroud)