gpt4 book ai didi

c# - log4net C# 中的方法名称

转载 作者:太空狗 更新时间:2023-10-30 00:30:56 31 4
gpt4 key购买 nike

我为 log4net 创建了一个 c# 包装器。

它有 Debug() 和 Error() 方法。

我想记录记录记录的方法名称,但如果我尝试使用 %method 转换模式,它只会打印 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);
}

调用类代码:

W6CustomizationLogger.Logger.Debug("Backup(): START");

最佳答案

报废包装。

配置

要初始化日志记录,您可以在启动项目中非常轻松地配置它。

  1. 在解决方案资源管理器中单击启动项目“属性”旁边的箭头
  2. 双击装配信息

enter image description here

3 添加以下内容:
[程序集:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

截图:

enter image description here

用法

现在在你的类中简单地添加:

public class YourClass
{
private ILog _logger = LogManager.GetLogger(typeof(YourClass));

// [....]
}

在您的 log4net.config 中,您现在可以在输出中使用 logger 属性:

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-7level %-40logger %message%newline" />
</layout>

这将在每个日志行上打印命名空间和类型名称(-7-40 填充名称以便我得到直列)。

另一件好事是您还可以在 namespace 上使用过滤器(使所有数据库类都记录到“databases.log”等)。

<appender name="DatabaseAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\MyApp\Database.log" />
<rollingStyle value="Composite" />
<datePattern value=".yyyy-MM-dd'.log'" />
<appendToFile value="true" />
<maximumFileSize value="50MB" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level@%thread [%logger] %message%newline" />
</layout>

<!-- Namespace/Type filter -->
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="CompanyName.DatabaseNamespace"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>

如果 %logger 只获取类名,您也可以使用 %type{1}

关于c# - log4net C# 中的方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957276/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com