ASP.NET Core 2.0ではこれがあります
_public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
_
CreateDefaultBuilder(args)
には多くの便利なデフォルトがあります。ただし、 これを含む :
_.ConfigureLogging((context, logging) => {
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
logging.AddConsole(); // HERE IS THE PROBLEM
logging.AddDebug(); // HERE IS THE PROBLEM
})
_
そのため、コンソールおよびデバッグロギングプロバイダーは常に登録されます。
以前はこのように登録していました
_if (env.IsDevelopment())
{
// register them here
}
_
実稼働モードで実行しているときに、それらを削除/登録解除するにはどうすればよいですか? ログレベルを変更することを意味するのではなく、プロダクションモードでそれらをまったく登録したくないことを意味します。
これを行うdesigned方法は、これらのプロバイダーに何も記録しないようにロギング構成を変更することです。しかし、私はあなたが本番の呼び出しを削除したいことを理解しています。コードでこれを適切に行うことができます。
HostBuilderContext
ラムダに渡されるConfigureLogging
からホスティング環境に簡単にアクセスできます。
.ConfigureLogging((context, logging) =>
{
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
if (context.HostingEnvironment.IsDevelopment())
{
logging.AddConsole();
logging.AddDebug();
}
});
明らかに、これだけではCreateDefaultBuilder
呼び出しが既に設定したものを取り消すのに役立ちません。まず、これらのプロバイダーの登録を解除する必要があります。そのために、新しい ILoggingBuilder.ClearProviders
メソッド:
.ConfigureLogging((context, logging) =>
{
// clear all previously registered providers
logging.ClearProviders();
// now register everything you *really* want
// …
});
これは GitHubでのこのロギングの問題 に対応して導入されました。
CreateDefaultBuilderを使用することも、LogLevelsをNoneに設定することもできないと思います。ドキュメントによると、これを使用できます。
public static void Main(string[] args)
{
var webHost = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true,
reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json",
optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.UseStartup<Startup>()
.Build();
webHost.Run();
}
プロバイダーセクションを追加する方法 https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/logging?tabs=aspnetcore2x
別のオプションが見つかりました。appsettings.jsonにコンソールのログフィルタを追加するだけです
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"Console": {
"LogLevel": {
"Default": "None"
}
}
}、