我们正尝试通过配置文件(默认为appsettings.json)为ASP.NET Core应用程序配置日志记录。文档表示应该可以(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1),但我们无法使其按预期工作。
到目前为止我们尝试过的事情:
view?.viewTreeObserver?.addOnGlobalLayoutListener {
val rect = Rect()
view?.getWindowVisibleDisplayFrame(rect)
val screenHeight = view?.rootView?.height
val keypadHeight = screenHeight?.minus(rect.bottom) ?: return
if (keypadHeight > screenHeight * KEYBOARD_MINIMUM_HEIGHT_PERCENTAGE) {
//keyboard is shown do what ever you like
} else {
//keyboard is hidden
}
}
public static IHostBuilder CreateHostBuilder (string[] args) =>
Host.CreateDefaultBuilder (args)
.ConfigureAppConfiguration ((hostingContext, config) =>
{
config.Sources.Clear ();
var env = hostingContext.HostingEnvironment;
config.AddJsonFile ("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile ($"appsettings.{env.EnvironmentName}.json",
optional: true, reloadOnChange: true);
config.AddEnvironmentVariables ();
})
.ConfigureLogging ((hostingContext, logging) =>
{
logging.ClearProviders ();
logging.AddConfiguration (hostingContext.Configuration.GetSection ("Logging"));
})
.ConfigureWebHostDefaults (webBuilder =>
{
webBuilder.UseStartup<Startup> ();
});
答案 0 :(得分:2)
您误会了。您可以配置日志记录,即每个提供程序的日志级别,过滤消息等,但是实际的提供程序必须在代码中分配。换句话说,您可以通过config配置将哪些消息发送到控制台,但是您仍然必须在logging.AddConsole()
中调用ConfigureLogging
来添加该提供程序。
您拥有的代码会清除所有默认提供程序,并且不添加任何内容,因此根本没有提供程序,因此不会生成任何日志。您实际上不能通过config添加提供程序,只需配置已添加的提供程序即可。