gpt4 book ai didi

c# - 使用 log4net 以日志级别作为参数进行日志记录

转载 作者:太空狗 更新时间:2023-10-29 18:16:32 24 4
gpt4 key购买 nike

有没有办法使用 log4net 登录并使用 LogLevel 作为参数?

也就是不写

Log.Debug("Something went wrong");

我想写这样的东西:

Log("Something went wrong", LogLevel.Debug);

最佳答案

根据 log4net 文档 here (看log4net.Core.ILogger),可以在ILogger接口(interface)上使用Log方法。

private static ILog logger = 
LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

logger.Logger.Log(logger.GetType(),LogLevel.Debug,"Something went wrong", ex);

log4net 使用 Type 参数来确定日志记录代码和应用程​​序代码之间的调用堆栈中的边界。如果启用了方法名称日志记录,log4net 会向上导航调用堆栈,直到堆栈上 MethodInfo 的 DeclaringType 等于传入的 Type(上面 Log 调用中的 Type)。当它找到 DeclaringType 时,调用堆栈中的下一个方法就是实际调用方法(应用程序代码)。

您还可以使用采用 LoggingEvent 结构的重载。

文档还说 Log 方法旨在由包装器使用。我不知道这是否应该被视为“信息性”消息或不要直接使用它的强烈建议。

如果您想通过 Log 方法进行所有日志记录调用,您可以将获取记录器的代码更改为如下所示(这样您就可以避免在每次 Log 调用时都使用 Logger 属性):

private static ILogger logger = 
LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType).Logger;

logger.Log(logger.GetType(),LogLevel.Debug,"Something went wrong", ex);

关于c# - 使用 log4net 以日志级别作为参数进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568183/

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