mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-12-26 23:15:48 +08:00
* hacking around to work out why logging and request id isnt working * pass request id into logger so it can be structured, removed a bunch of debug logging we dont need because diagnostic trace gets it * changed config dependency * always have tracing available * made it so we dont need to pass config into services.AddOcelot anymore with .net core 2.0 * add test * lots of changes relating to logging and request ids, also updated documentation * fixed failing test i missed
87 lines
3.5 KiB
C#
87 lines
3.5 KiB
C#
using System;
|
|
using Microsoft.Extensions.Logging;
|
|
using Ocelot.Infrastructure.RequestData;
|
|
|
|
namespace Ocelot.Logging
|
|
{
|
|
public class AspDotNetLogger : IOcelotLogger
|
|
{
|
|
private readonly ILogger _logger;
|
|
private readonly IRequestScopedDataRepository _scopedDataRepository;
|
|
|
|
public string Name { get; }
|
|
|
|
public AspDotNetLogger(ILogger logger, IRequestScopedDataRepository scopedDataRepository, string typeName)
|
|
{
|
|
Name = typeName;
|
|
_logger = logger;
|
|
_scopedDataRepository = scopedDataRepository;
|
|
}
|
|
|
|
public void LogTrace(string message, params object[] args)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogTrace("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message},", requestId, previousRequestId, message, args);
|
|
}
|
|
|
|
public void LogDebug(string message, params object[] args)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogDebug("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message},", requestId, previousRequestId, message, args);
|
|
}
|
|
|
|
public void LogInformation(string message, params object[] args)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogInformation("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message},", requestId, previousRequestId, message, args);
|
|
}
|
|
|
|
public void LogError(string message, Exception exception)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogError("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message}, exception: {exception}", requestId, previousRequestId, message, exception);
|
|
}
|
|
|
|
public void LogError(string message, params object[] args)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogError("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message}", requestId, previousRequestId, message, args);
|
|
}
|
|
|
|
public void LogCritical(string message, Exception exception)
|
|
{
|
|
var requestId = GetOcelotRequestId();
|
|
var previousRequestId = GetOcelotPreviousRequestId();
|
|
_logger.LogError("requestId: {requestId}, previousRequestId: {previousRequestId}, message: {message}", requestId, previousRequestId, message);
|
|
}
|
|
|
|
private string GetOcelotRequestId()
|
|
{
|
|
var requestId = _scopedDataRepository.Get<string>("RequestId");
|
|
|
|
if (requestId == null || requestId.IsError)
|
|
{
|
|
return $"no request id";
|
|
}
|
|
|
|
return requestId.Data;
|
|
}
|
|
|
|
private string GetOcelotPreviousRequestId()
|
|
{
|
|
var requestId = _scopedDataRepository.Get<string>("PreviousRequestId");
|
|
|
|
if (requestId == null || requestId.IsError)
|
|
{
|
|
return $"no previous request id";
|
|
}
|
|
|
|
return requestId.Data;
|
|
}
|
|
}
|
|
} |