.Net Core 3.1 콘솔 앱을 빌드 중이며 콘솔 로깅에서 빌드를 사용하고 싶습니다. .net 로깅에 대한 수많은 기사가 있지만 실제로 콘솔에서 쓰는 샘플을 찾을 수 없었습니다.
namespace test
{
class Program
{
static void Main(string[] args)
{
var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider();
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
logger.LogDebug("All done!");
Console.Write("Yup");
}
}
컴파일하고 실행하며 콘솔에 "Yup"을 기록하지만 "All done!" 표시되지 않습니다. 콘솔 창에 출력 :
내가 무엇을 놓치고 있습니까?
서비스 처분이었습니다. Jeremy Lakeman 덕분에 수정 :
static void Main(string[] args)
{
using (var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider())
{
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
// run app logic
logger.LogDebug("All done!");
}
Console.Write("Yup");
}
로깅이 프로그램의 성능에 부정적인 영향을 미치지 않도록 비동기 적으로 작성 될 수 있습니다.
로그 공급자 및 기타 로깅 클래스를 삭제하면 로그가 플러시됩니다.
서비스 공급자는 또한 모든 서비스를 폐기 할 때 폐기해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다