如何调用参数类型为ILogger的方法

哈什·R

我想调用一个定义如下的方法

public async Task SomeMethod(string name, bool isWindowsOs, ILogger log)
{
    this.Name = name;
    this.isWindows = isWindowsOs;
    this.logger = log;   
    string configPath = 
        Utility.GetFilePathAsPerOs(this.ConfigurationFilePath, isWindows);

    if (!System.IO.File.Exists(ConfigPath))
    {
        Console.WriteLine($"{ConfigPath} was not found");
        logger.Error($"[{this.Name}] : Configuration file not found");
        await Task.CompletedTask;
    }  
    // Rest of the Code
}

因为我在调用Initialise方法时对于为ILogger类型传递什么参数感到困惑,之前还没有处理日志记录。有人可以帮我吗?

布拉姆·卡梅尔

ASP.NET Core具有依赖项注入支持,为此,建议使用ILogger来鼓励最佳做法(DI),但如果要在.net Core中实现此目的,则必须执行以下步骤:

Install-Package Microsoft.Extensions.Logging

在这里,我想使用控制台进行日志记录

Install-Package Microsoft.Extensions.Logging.Console

您可以尝试如下操作:

 class Program
    {
        private  static ILogger logger;
        private bool isWindows;

        static async Task Main(string[] args)
        {
          ILoggerFactory loggerFactory = new LoggerFactory().AddConsole();



            logger = loggerFactory.CreateLogger<Program>();

            logger.LogError("ooops");
            await new Program().SomeMethod("name", true, logger);

           Console.ReadLine();



        }
        public async Task SomeMethod(string name, bool isWindowsOs, ILogger log)
        {
            this.Name = name;
            this.isWindows = isWindowsOs;
            logger = log;
            //string configPath =
            //    Utility.GetFilePathAsPerOs(this.ConfigurationFilePath,
            //        isWindows);

            //if (!System.IO.File.Exists(ConfigPath))
            //{
            //    Console.WriteLine($"{ConfigPath} was not found");
            //    logger.Error($"[{this.Name}] : Configuration file not found");
            //    await Task.CompletedTask;
            //}
             logger.LogInformation("this is just confirmation for a successfull task");
            logger.LogError("ooops");

            // Rest of the Code
        }

        public string Name { get; set; }
    }

结果

fail: ConsoleApp1.Program[0]
      ooops
info: ConsoleApp1.Program[0]
      this is just confirmation for a successfull task
fail: ConsoleApp1.Program[0]
      ooops

请注意,
此示例使用控制台作为提供程序,您可以添加其他提供程序,例如Serilog或Nlog

此示例使用async Task Main需要启用c#7.1支持功能的示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当参数在C ++中为父类类型时,如何调用子类的方法?

当参数为Object []类型时,通过反射调用方法

方法调用中的歧义,参数类型为 Character 和 float

如何在方法调用时找到方法参数的类型?

基于参数类型的调用方法

当参数是给定类型的子类时如何调用重载方法?

调用泛型方法时如何推断参数类型?

如何在方法调用中对参数类型使用继承?

如何使用Func类型的Expression作为参数调用方法

如何在TypeScript中调用类型参数的静态方法

ILogger 类型的支持字段,但 ILogger<T> 类型的注入参数

如何反思地调用以null为参数的方法?

Python:如何调用某个参数为真的方法?

如何调用以 hashmap 为参数的用户定义方法?

延迟后如何调用返回类型为BOOL的方法?

如何使用LauncherDiscoveryRequestBuilder执行参数类型为TestInfo的测试方法?

类型为null的参数应显式转换为Class <?> []以调用varargs方法

REST API调用:类型为Long的方法参数缺少URI模板变量'productoId'

如果函数返回类型为void,应如何调用可变参数包中的所有函数?

如何修复错误“无法使用类型为((AnyObject !, NSError!)-> Void)的参数列表调用'findObjectInBackgroundWithBlock'

如何修复“无法为类型'MBMovingGround调用初始化程序?' 没有参数”错误迅速

如何调用应用程序类型为带参数的SAP GUI的SAP Fiori磁贴?

如何使用参数调用在python中存储为变量的函数?-类型错误被抛出

如何调用对象参数而不是Java中实际参数类型的方法?

Mypy:如何将类型作为函数参数并对该类型调用类方法

调用两(多)层泛型类型的虚拟方法时如何删除附加类型参数?

如何使用带有函数类型和其他类型的接口参数调用方法

当必需的参数为null时,如何在通用方法中不指定类型参数?

如何在 Julia 中为抽象类型的所有参数子类型定义方法?