gpt4 book ai didi

C# Azure 函数 ILoggerFactory 不使用引用库进行日志记录

转载 作者:行者123 更新时间:2023-12-03 22:00:33 25 4
gpt4 key购买 nike

我使用 C# 创建了一个简单的 Azure 函数,我想为其他类库实现 ILoggerFactory。这是我的代码。

MyFunction => Class1 => Class2

namespace FunctionApp1
{
public class MyFunction
{
private readonly ILogger _log;
private readonly IClass1 _class1;

public MyFunction(ILoggerFactory loggerFactory, IClass1 class1)
{
_log = loggerFactory.CreateLogger<MyFunction>();
_class1 = class1;
}

[FunctionName("Function1")]
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req)
{
_log.LogCritical("LogCritical MyFunction");
_log.LogInformation("LogInformation MyFunction");
_log.LogError("LogError MyFunction");
_log.LogWarning("LogWarning MyFunction");

string value = _class1.Test1(23);

return new OkObjectResult($"Hello, {value}");
}
}
}

namespace ClassLibrary1
{
public interface IClass1
{
string Test1(int x);
}

public class Class1 : IClass1
{
private readonly ILogger _log;
private readonly IClass2 _class2;

public Class1(ILoggerFactory loggerFactory, IClass2 class2)
{
_log = loggerFactory.CreateLogger<Class1>();
_class2 = class2;
}

public string Test1(int x)
{
_log.LogCritical("LogCritical Class1");
_log.LogInformation("LogInformation Class1");
_log.LogError("LogError Class1");
_log.LogWarning("LogWarning Class1");

return _class2.Test2(x);
}
}
}

namespace ClassLibrary2
{
public interface IClass2
{
string Test2(int x);
}
public class Class2 : IClass2
{
private readonly ILogger _log;

public Class2(ILoggerFactory loggerFactory)
{
_log = loggerFactory.CreateLogger<Class2>();
}

public string Test2(int x)
{
_log.LogCritical("LogCritical Class2");
_log.LogInformation("LogInformation Class2");
_log.LogError("LogError Class2");
_log.LogWarning("LogWarning Class2");

return $"Entered : {x}";
}
}
}

[assembly: WebJobsStartup(typeof(FunctionApp1.StartUp))]
namespace FunctionApp1
{
public class StartUp : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.Services.AddSingleton<IClass1, Class1>();
builder.Services.AddSingleton<IClass2, Class2>();
}
}
}

我的问题是在运行时它只记录 FunctionApp1 类中的一个。有没有办法在其他类而不是主功能应用程序中记录信息或错误?

enter image description here

最佳答案

更新:

如何在Azure门户中查找host.json:

1. enter image description here

2. enter image description here

<小时/>

请尝试将日志级别与相应的namespace_name.class_Name添加到host.json中:

这是 host.json 文件(确保右键单击 host.json -> 属性 -> 将“复制到输出目录”设置为“如果较新则复制”):

{
"version": "2.0",
"logging": {
"logLevel": {
"ClassLibrary1.Class1": "Information",
"ClassLibrary2.Class2": "Information"
}
}
}

然后,所有的日志都被打印出来:

enter image description here

更多详情可以引用这个GitHub issue .

关于C# Azure 函数 ILoggerFactory 不使用引用库进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677370/

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