【问题标题】:Log4Net Log to specific Appender .NET CoreLog4Net 记录到特定的 Appender .NET Core
【发布时间】:2020-02-18 16:29:12
【问题描述】:

使用 .NET Core、C#、Log4Net 2.0.8

我正在尝试登录到不同的 Appender,但由于某种原因没有 log4net.LogManager.GetLogger(string),只有 log4net.LogManager.GetLogger(type)。

我举了一个例子: Log4net - Logging to wrong appender

我希望从一个班级登录:

private static readonly ILog logA = LogManager.GetLogger("LogA");
log.Debug("This should log to LogA");

在另一个类中:

private static readonly ILog logB = LogManager.GetLogger("LogB");
log.Debug("This should log to LogB");

我在https://logging.apache.org/log4net/release/manual/introduction.html之后尝试理解Log4Net

但例子也指:

ILog x = LogManager.GetLogger("wombat");
ILog y = LogManager.GetLogger("wombat");

如何登录特定的 Appender?谢谢

【问题讨论】:

    标签: c# .net-core log4net


    【解决方案1】:

    您需要使用GetLogger(Assembly repositoryAssembly, string name) 重载,请参阅spec

    必须传入assembly 参数,例如Assembly.GetExecutingAssembly().

    (请注意,这将记录到特定的记录器,而不是附加程序,这是您正在尝试做的。)

    例子:

    ILog logger = LogManager .GetLogger(Assembly.GetExecutingAssembly(), "LogB");
    

    【讨论】:

    • 谢谢!我会试试这个。我认为 Log.config 中的条目是一个附加程序,而 Loggers 包含许多附加程序,具体取决于我使用的 log.config 文件?
    • 没错,就是在配置文件中同时定义了loggers和appenders;传递给GetLogger 的名称是记录器的名称,它通过其附加程序输出。只是为了避免混淆,因为您的帖子标题说“登录到特定的附加程序”......
    • 啊!我现在知道了!非常感谢!
    猜你喜欢
    • 2020-10-15
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多