Aby debugować aplikację core .net, która kończy się niepowodzeniem podczas uruchamiania, chciałbym napisać dzienniki z pliku startup.cs. Mam rejestrowanie instalacji w pliku, który może być używany w pozostałej części aplikacji poza plikiem startup.cs, ale nie wiem, jak pisać logi z samego pliku startup.cs.Jak pisać dzienniki z poziomu Startup.cs
16
A
Odpowiedz
12
Wariant 1: bezpośrednio korzystać dziennik (np Serilog) w startup-
public class Startup
{
public Startup(IHostingEnvironment env)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "Serilog-{Date}.txt"))
.CreateLogger();
Log.Information("Inside Startup ctor");
....
}
public void ConfigureServices(IServiceCollection services)
{
Log.Information("ConfigureServices");
....
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
Log.Information("Configure");
....
}
wyjściowa:
Aby skonfigurować Serilog w aplikacji asp.net-core , sprawdź Serilog.AspNetCore package on GitHub.
Opcja 2: Konfigurowanie rejestrowania w Program.cs jak to- loggerFactory
var host = new WebHostBuilder()
.UseKestrel()
.ConfigureServices(s => {
s.AddSingleton<IFormatter, LowercaseFormatter>();
})
.ConfigureLogging(f => f.AddConsole(LogLevel.Debug))
.UseStartup<Startup>()
.Build();
host.Run();
użytkownika przy starcie jak to-
public class Startup
{
ILogger _logger;
IFormatter _formatter;
public Startup(ILoggerFactory loggerFactory, IFormatter formatter)
{
_logger = loggerFactory.CreateLogger<Startup>();
_formatter = formatter;
}
public void ConfigureServices(IServiceCollection services)
{
_logger.LogDebug($"Total Services Initially: {services.Count}");
// register services
//services.AddSingleton<IFoo, Foo>();
}
public void Configure(IApplicationBuilder app, IFormatter formatter)
{
// note: can request IFormatter here as well as via constructor
_logger.LogDebug("Configure() started...");
app.Run(async (context) => await context.Response.WriteAsync(_formatter.Format("Hi!")));
_logger.LogDebug("Configure() complete.");
}
}
pełne dane dostępne na tej link
0
Udało mi się to zrobić przez statyczne utworzenie programu rejestrującego z Nlog w pliku, a następnie użyj go w ramach metod uruchamiania.
private readonly NLog.Logger _logger = new NLog.LogFactory().GetCurrentClassLogger();
19
To zmieniło się niewiarygodnie z wersją ASP.NET Core 2.0. W programie ASP.NET Core 2.0 rejestrowanie jest tworzone w programie budującym hosta. Oznacza to, że rejestracja jest domyślnie dostępna przez DI i można ją wprowadzić do klasy Startup
:
public class Startup
{
private readonly ILogger<Startup> _logger;
public IConfiguration Configuration { get; }
public Startup(ILogger<Startup> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
_logger.LogInformation("ConfigureServices called");
// …
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
_logger.LogInformation("Configure called");
// …
}
}
Powiązane problemy
- 1. Uzyskiwanie informacji o obiekcie Startup.cs
- 2. Wystąpił nieobsługiwany błąd niskiego poziomu. Dzienniki aplikacji mogą mieć dane
- 3. Jak pisać wyniki z testu jednostkowego?
- 4. Korzystanie ciąg połączenia z appsettings.json do startup.cs
- 5. Winston: jak obracać dzienniki
- 6. Jak testować urządzenie Startup.cs w rdzeniu .NET
- 7. W języku java, jak pisać dzienniki do konkretnego pliku dostarczającego log4j?
- 8. Dzienniki archiwum NodeJS/Forever
- 9. Jak usunąć stare dzienniki z log4j2
- 10. Jak usunąć MPAVController dzienniki konsoli z Xcode
- 11. Jak wyłączyć dzienniki http z wyjścia Rspec?
- 12. Jak monitorować dzienniki serwera Meteor.com
- 13. Jak mogę sprawdzić dzienniki Oozie?
- 14. Jak czytasz dzienniki zmian CPAN?
- 15. Jak pisać czytelny JavaScript
- 16. jak pisać oczekiwane awarie?
- 17. Jak pisać zakrzywiony tekst?
- 18. Jak pisać przypadki testowe?
- 19. Jak pisać zakres z obiektem belongs_to?
- 20. Jak pisać skrypty powłoki Uniksa z opcjami?
- 21. Dziennik zdarzeń systemu Windows a dzienniki tekstów
- 22. dzienniki z danymi i znacznikiem czasu
- 23. Jak mogę sprawdzić dzienniki bramy AWS dla połączeń zewnętrznych?
- 24. Gdzie znajdę dzienniki System.out.println()?
- 25. IIS dzienniki pytania
- 26. Dzienniki CloudWatch działa dziwnie
- 27. Dzienniki awarii Firebase z adresami URL redaktowanymi
- 28. jak pisać i wykonywać wątek
- 29. jak pisać konstruktory dziedziczenia C++
- 30. Jak przechowywać dzienniki Tornado w pliku?