You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NLog:如何结合自定义Logger类使用Isolated LogFactories并解决类型转换问题

解决NLog自定义Logger与隔离LogFactory的类型转换问题

问题核心在于:默认情况下LogFactory创建的是NLog.Logger实例,而非你的自定义MyLogger子类,因此强制转换会失败。以下是两种可行的解决方式:

方式一:显式指定Logger类型获取实例

修改日志获取代码,使用LogFactory.GetCurrentClassLogger<T>()泛型方法直接获取MyLogger实例,无需强制转换:

private static MyLogger logger = MyLogger.MyLogManager.Instance.GetCurrentClassLogger<MyLogger>();

方式二:配置LogFactory默认创建自定义Logger

在BuildLogFactory方法中,设置LogFactory的DefaultLoggerType属性,让它默认实例化你的MyLogger类:

private static LogFactory BuildLogFactory()
{
    string configFilePath = "path/to/my/config";

    LogFactory logFactory = new LogFactory();
    // 设置默认Logger类型为自定义的MyLogger
    logFactory.DefaultLoggerType = typeof(MyLogger);
    logFactory.Configuration = new XmlLoggingConfiguration(configFilePath, true, logFactory);
    return logFactory;
}

之后就可以直接获取并使用MyLogger,无需泛型指定:

private static MyLogger logger = (MyLogger)MyLogger.MyLogManager.Instance.GetCurrentClassLogger();

补充说明

确保你的MyLogger类继承NLog.Logger的逻辑正确,自定义方法都在该类中实现。两种方式都能让LogFactory创建你需要的自定义Logger实例,彻底避免类型转换异常。

内容的提问来源于stack exchange,提问作者n7GA2mr2RbAs5KI6

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:45:41