Asp.Net Core 2.0.1, EF 2.0.1 및 MVC 6을 사용하는 다중 프로젝트 솔루션에서 Logger로 Serilog를 설정하려고합니다.Asp.Net Core 2.0.1에 대한 Serilog 설정으로 로그가 생성되지 않습니다.
은 내가 수정 한 여기
appsettings.json 파일을 표시됩니다 해당 게시물에있는 JSON에 문제가 있습니다 대부분이 블로그 게시물 Set up Serilog post
의 지침에 따라, Serilog을 설정 한
(210)나는 Program.cs
public static int Main(string[] args)
{
var currentEnv = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{currentEnv}.json", optional: true)
.AddEnvironmentVariables()
.Build();
//Configure logger
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
//do this for now
//TODO:figure out how to add to Serilog config in appsettings.json
.WriteTo.Seq("http://localhost:5341")
.CreateLogger();
Log.Information("Logger created");
try
{
Log.Information("Starting web host");
BuildWebHost(args).Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Web Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
//BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
의 기본 방법 그리고 내 시작 방법 로거 구성 작업이
services.AddLogging(loggingBuilder =>
loggingBuilder.AddSerilog(dispose: true));
나는를 실행하면 내가 Serilog가 로그 폴더를 만들 것이라고 가정했다
로그 폴더 나 로그가 없습니다. 로그 폴더를 솔루션의 루트와 웹 응용 프로그램 프로젝트에 추가하고 다시 실행했습니다. 로그가 없습니다. 블로그 게시물 작성자는 컴퓨터 루트 폴더를 살펴 보라고 제안했습니다. C와 OneDrive 메인 폴더 (OneDrive에 저장된 솔루션 파일)에서 보았지만 거기에는 로그가 하나도 없었습니다.
나는 다음응용 프로그램에서 실패했기 때문에 내가, 내가 설정 한 구성의 세트 목욕 경로 방법을 추가 한 이유는,이 경고를 얻고 있었다System.IO.FileNotFoundException이 HRESULT = 0x80070002가 메시지 = 구성 파일 'appsettings.json이'을 (를) 찾을 수 없습니다 발생 및 선택하지 경고 스택 추적을 나타났습니다. 실제 경로는 'C : \ Users \ OneDrive \ TestingConfigurationAspNetCore2 \ TestMvcApp \ bin \ Debug \ netcoreapp2.0 \ appsettings.json'입니다. 자료 = 스택 트레이스 : Microsoft.Extensions.Configuration.FileConfigurationProvider.Load (부울 장전) Microsoft.Extensions.Configuration.ConfigurationRoot..ctor에서 Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()에서 에서 (IList`1 제공) Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()에서
코드 라인
bin 폴더에서 파일 이름이 appsettings.json이 아니고 TestMvcApp.runtimeconfig.json이라는 파일이 꽤 명확하기 때문입니다.
.SetBasePath를 추가하면 코드가 실행되어 구성 설정 후 중단 점을 적용합니다. 구성 객체에는 내 appsettings.json 파일의 모든 설정이 포함되어 있으므로 왜 스택 추적 오류가 발생합니까? 나도 몰라하지만 나는 아무런 이유도없이 로그를 기록 할 것이다. (콘솔에 로그 메시지가 나타나지 않는다.)
왜 스택 추적 오류가 발생했는지, 또는 기록되는 로그 메시지가없는 이유에 대한 도움말 로그 파일에 저장하거나 콘솔에 표시하는 것이 가장 좋습니다. 때문에 파일이 appsettings.json 호출되지 않습니다 bin 폴더, 그라고 TestMvcApp.runtimeconfig.json에 매우 명백했다
이 선'.WriteTo.Seq (에 "http : // localhost를 : 5341")는'당신이 로그 파일에 만에 기록되지 않은 것을 나타냅니다 로깅 서버. 그게 당신의 의도입니까? – CalC
롤링 로그가 쓰지 않을 때 거기에 쓸 수 있는지를 알기 위해 추가했습니다. 그들 중 하나가 – dinotom
가고 arent 내가 틀렸다면, Serilog 모든 WriteTo의 구성에 정의 된 것입니다 – dinotom