Я пытаюсь выяснить, как получить более подробные журналы из Identity Server 4, особенно если что-то идет не так.Я прочитал их документацию здесь http://docs.identityserver.io/en/latest/topics/logging.html Однако я не могу заставить ее работать.Во-первых, я не использую serilog, и у меня IS4, запущенный на сервере, к которому у меня нет удаленного доступа, поэтому ведение журнала консоли не будет работать для меня.
Поэтому я пыталсядобавьте мою собственную библиотеку журналов, которая у меня есть, со следующим:
public class Temp : IDisposable
{
public void Dispose() { }
}
public class CustomLogger : ILogger
{
private readonly IDatabaseLoggerService _databaseLoggerService;
public CustomLogger(IDatabaseLoggerService databaseLoggerService)
{
_databaseLoggerService = databaseLoggerService;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
if(exception == null) return;
_databaseLoggerService.Fatal(new LogErrorDetails
{
Exception = exception,
Message = "LIS - " + formatter
});
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public IDisposable BeginScope<TState>(TState state)
{
return new Temp();
}
}
public class CustomLoggerProvider : ILoggerProvider
{
private readonly IDatabaseLoggerService _databaseLoggerService;
public CustomLoggerProvider(IDatabaseLoggerService databaseLoggerService)
{
_databaseLoggerService = databaseLoggerService;
}
public void Dispose() { }
public ILogger CreateLogger(string categoryName)
{
return new CustomLogger(_databaseLoggerService);
}
}
Как вы можете видеть, это довольно просто, потому что на данный момент мне не нужно его полировать, просто нужно, чтобы он работал, и я будупоработайте над его правильной реализацией позже, когда у меня будет работать образец.
Теперь, чтобы настроить это, я сделал это при запуске:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//code emmited
var serviceProvider = app.ApplicationServices;
var dbLogger = serviceProvider.GetService<IDatabaseLoggerService>();
loggerFactory.AddProvider(new CustomLoggerProvider(dbLogger));
}
Однако я не вижу никакихВ журналах об этом, единственное, что я видел, была случайная ошибка токена анти-фальсификации, которая теперь всплывает, и вот она:
в Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Deserialize (String serializedToken) в Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.GetCookieTokenDoesNotThrow (HttpContext httpContext)
Что я хотел бы увидеть, если бы запрос токена былуспешно или если это не удалось и почему, но я не вижу ничего из этого.
Как мне добиться более высокого уровня ведения журнала для Identity Server 4?