Я создал простую Azure функцию, используя c#, и я хотел бы реализовать 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](https://i.stack.imgur.com/RzRjK.jpg)