ILogger
は、以下のToken
メソッドのように、関数パラメーターに注入できます。
ただし、コンストラクタパラメータlog
に挿入すると、以下のエラーが発生しました。
[07/03/2019 17:15:17]実行された「トークン」(失敗、Id = 4e22b21f-97f0-4ab4-8f51-8651b 09aedc8)[07/03/2019 17:15:17] Microsoft.Extensions.DependencyInjection。抽象化:「関数」をアクティブにしようとしているときに、タイプ「Microsoft.Extensions.Logging.ILogger」のサービスを解決できません。
ILogger
は、以下のToken
関数パラメーターに挿入できます。ただし、コンストラクタパラメータlog
に挿入すると、上記のエラーが発生しました。
public class Functions
{
private HttpClient _httpClient;
private IAppSettings _appSettings;
private ILogger _log;
public Functions(HttpClient httpClient, IAppSettings appSettings //working for these two
, ILogger log //not working, errors
)
{
_log = log;
}
[FunctionName("Token")]
public async Task<IActionResult> Token(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Token")]
HttpRequest httpRequest,
ILogger log)
{
}
}
以下の依存性注入
[Assembly: WebJobsStartup(typeof(Startup))]
namespace MyApp
{
public class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.Services.AddHttpClient();
builder.Services.AddTransient<IAppSettings, AppSettings>();
//builder.Services.AddLogging(); //not working
//builder.Services.AddSingleton<ILogger>() //not working
}
}
ビジュアルスタジオ2017
私も同じ問題を抱えていました。最終的に、この「logging」要素をHost.jsonファイルに追加すると、問題が解決することがわかりました。
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Trace"
}
}
}
これで、標準の.NETコアコンストラクターによって注入されたロガーメソッドが正常に機能します。