0

我有一个系统,我想制作一个自定义日志来为每个用户创建单独的文件夹。现在,我在 NLog.Logger 中像自定义文件目标一样制作它

public static LogFactory ConfigureCustomNLog(string userName)
        {
            var target = new FileTarget();
            target.Name = "fileLog";
            target.FileName = $"${{basedir}}/log" + $"/{userName}/{userName}" + "${shortdate}.log";
            target.Layout =
                "${longdate}|${uppercase:${level}} ${logger}|${message} ${exception:format=ToString,StackTrace}";

            var config = ConfigureNLog("NLog.Config").Configuration;
            config.RemoveTarget("fileLog");
            config.AddTarget(target.Name, target);

            var rule = new LoggingRule(userName, LogLevel.Debug, target);
            config.LoggingRules.Add(rule);

            LogManager.Configuration = config;

            return LogManager.LogFactory;
        }

一切正常,但我想像 Microsoft.Extensions.ILogger 一样使用。如何将 NLog.Logger 导入 ILogger?或者我如何为 ILogger 进行自定义配置?

4

1 回答 1

0

通常 Microsoft ILogger 与依赖注入一起使用。就像这里描述的:

https://github.com/NLog/NLog/wiki/Getting-started-with-.NET-Core-2---Console-application

但您也可以手动执行此操作:

class MyClass
{
    private readonly Microsoft.Extensions.Logging.ILogger Logger;
 
    public MyClass(Microsoft.Extensions.Logging.ILoggerFactory loggerFactory)
    {
        Logger = loggerFactory.CreateLogger(GetType().ToString());
        Logger.LogInformation("Hello");
    }
}

var loggerFactory = new NLog.Extensions.Logging.NLogLoggerFactory();
var myClass = new MyClass(loggerFactory);

如果您正在构建 Web 应用程序,那么这可能会有所帮助:https ://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-5

于 2021-04-03T17:14:12.773 回答