c# - C# Azure 函数 ILoggerFactory 不使用参考库记录
问题描述
我使用 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 类中的那个。有没有办法在其他类而不是主功能应用程序中记录信息或错误?
解决方案
更新:
如何在 Azure 门户中找到 host.json:
请尝试添加相应的日志namespace_name.class_Name
级别host.json
:
这是 host.json 文件(确保右键单击 host.json -> 属性 -> 将“复制到输出目录”设置为“如果较新则复制”):
{
"version": "2.0",
"logging": {
"logLevel": {
"ClassLibrary1.Class1": "Information",
"ClassLibrary2.Class2": "Information"
}
}
}
然后,打印出所有日志:
有关更多详细信息,您可以参考此GitHub 问题。
推荐阅读
- powershell - Powershell 中的“$”符号有什么作用?
- mysql - 当数据库已使用新条目更新时,如何在 django 中获取推送通知?
- mysql - 如何使用 mysql 客户端连接到远程 mysql kubernetes pod
- javascript - 如何修复无法在组件上调用 setState,但它可能会在使用 React Js 的应用程序中出现错误
- r - R data.table 保留组的第一个非NA值直到组结束
- python - 如何解决 wget 下载的 403 错误
- react-native - 没有在 FlatList 上应用borderRadius
- python - 将年份和日期转换为 pandas 时间戳
- vb.net - csv 中的数据未正确对齐
- php - 以整数形式返回时间差