Updates to Elastic logging
This commit is contained in:
@@ -21,7 +21,7 @@ namespace Myriad.Gateway
|
||||
public Cluster(GatewaySettings gatewaySettings, ILogger logger)
|
||||
{
|
||||
_gatewaySettings = gatewaySettings;
|
||||
_logger = logger;
|
||||
_logger = logger.ForContext<Cluster>();
|
||||
}
|
||||
|
||||
public Func<Shard, IGatewayEvent, Task>? EventReceived { get; set; }
|
||||
|
@@ -56,7 +56,7 @@ namespace Myriad.Gateway.Limit
|
||||
if (!queue.TryDequeue(out var tcs))
|
||||
continue;
|
||||
|
||||
_logger.Information(
|
||||
_logger.Debug(
|
||||
"Allowing identify for bucket {BucketId} through ({QueueLength} left in bucket queue)",
|
||||
bucket, queue.Count);
|
||||
tcs.SetResult();
|
||||
|
@@ -14,7 +14,7 @@ namespace Myriad.Gateway.Limit
|
||||
public TwilightGatewayRatelimiter(ILogger logger, string url)
|
||||
{
|
||||
_url = url;
|
||||
_logger = logger;
|
||||
_logger = logger.ForContext<TwilightGatewayRatelimiter>();
|
||||
}
|
||||
|
||||
public async Task Identify(int shard)
|
||||
|
@@ -9,6 +9,7 @@ using Myriad.Serialization;
|
||||
using Myriad.Types;
|
||||
|
||||
using Serilog;
|
||||
using Serilog.Context;
|
||||
|
||||
namespace Myriad.Gateway
|
||||
{
|
||||
@@ -50,7 +51,7 @@ namespace Myriad.Gateway
|
||||
_info = info;
|
||||
_ratelimiter = ratelimiter;
|
||||
_url = url;
|
||||
_logger = logger;
|
||||
_logger = logger.ForContext<Shard>().ForContext("ShardId", info.ShardId);
|
||||
_stateManager = new ShardStateManager(info, _jsonSerializerOptions, logger)
|
||||
{
|
||||
HandleEvent = HandleEvent,
|
||||
@@ -70,6 +71,9 @@ namespace Myriad.Gateway
|
||||
|
||||
private async Task ShardLoop()
|
||||
{
|
||||
// may be superfluous but this adds shard id to ambient context which is nice
|
||||
using var _ = LogContext.PushProperty("ShardId", _info.ShardId);
|
||||
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
|
@@ -140,8 +140,8 @@ namespace Myriad.Gateway
|
||||
_hasReceivedHeartbeatAck = true;
|
||||
_latency = DateTimeOffset.UtcNow - _lastHeartbeatSent;
|
||||
OnHeartbeatReceived?.Invoke(_latency!.Value);
|
||||
_logger.Information("Shard {ShardId}: Received Heartbeat (latency {Latency} ms)",
|
||||
_info.ShardId, _latency);
|
||||
_logger.Debug("Shard {ShardId}: Received Heartbeat (latency {Latency:N2} ms)",
|
||||
_info.ShardId, _latency?.TotalMilliseconds);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,7 @@ using Myriad.Serialization;
|
||||
using Polly;
|
||||
|
||||
using Serilog;
|
||||
using Serilog.Context;
|
||||
|
||||
namespace Myriad.Rest
|
||||
{
|
||||
@@ -172,8 +173,10 @@ namespace Myriad.Rest
|
||||
{
|
||||
return await _retryPolicy.ExecuteAsync(async _ =>
|
||||
{
|
||||
using var __ = LogContext.PushProperty("EndpointName", ratelimitParams.endpointName);
|
||||
|
||||
var request = createRequest();
|
||||
_logger.Debug("Sending request: {RequestMethod} {RequestPath}",
|
||||
_logger.Debug("Request: {RequestMethod} {RequestPath}",
|
||||
request.Method, request.RequestUri);
|
||||
|
||||
request.Version = _httpVersion;
|
||||
@@ -185,9 +188,8 @@ namespace Myriad.Rest
|
||||
stopwatch.Stop();
|
||||
|
||||
_logger.Debug(
|
||||
"Received response in {ResponseDurationMs} ms: {RequestMethod} {RequestPath} -> {StatusCode} {ReasonPhrase}",
|
||||
stopwatch.ElapsedMilliseconds, request.Method, request.RequestUri, (int) response.StatusCode,
|
||||
response.ReasonPhrase);
|
||||
"Response: {RequestMethod} {RequestPath} -> {StatusCode} {ReasonPhrase} (in {ResponseDurationMs} ms)",
|
||||
request.Method, request.RequestUri, (int) response.StatusCode, response.ReasonPhrase, stopwatch.ElapsedMilliseconds);
|
||||
|
||||
await HandleApiError(response, ignoreNotFound);
|
||||
|
||||
@@ -208,14 +210,16 @@ namespace Myriad.Rest
|
||||
if (response.StatusCode == HttpStatusCode.NotFound && ignoreNotFound)
|
||||
return;
|
||||
|
||||
throw await CreateDiscordException(response);
|
||||
var body = await response.Content.ReadAsStringAsync();
|
||||
var apiError = TryParseApiError(body);
|
||||
if (apiError != null)
|
||||
_logger.Warning("Discord API error: {DiscordErrorCode} {DiscordErrorMessage}", apiError.Code, apiError.Message);
|
||||
|
||||
throw CreateDiscordException(response, body, apiError);
|
||||
}
|
||||
|
||||
private async ValueTask<DiscordRequestException> CreateDiscordException(HttpResponseMessage response)
|
||||
private DiscordRequestException CreateDiscordException(HttpResponseMessage response, string body, DiscordApiError? apiError)
|
||||
{
|
||||
var body = await response.Content.ReadAsStringAsync();
|
||||
var apiError = TryParseApiError(body);
|
||||
|
||||
return response.StatusCode switch
|
||||
{
|
||||
HttpStatusCode.BadRequest => new BadRequestException(response, body, apiError),
|
||||
|
@@ -50,7 +50,7 @@ namespace Myriad.Rest.Ratelimit
|
||||
|
||||
if (Remaining > 0)
|
||||
{
|
||||
_logger.Debug(
|
||||
_logger.Verbose(
|
||||
"{BucketKey}/{BucketMajor}: Bucket has [{BucketRemaining}/{BucketLimit} left], allowing through",
|
||||
Key, Major, Remaining, Limit);
|
||||
Remaining--;
|
||||
@@ -82,7 +82,7 @@ namespace Myriad.Rest.Ratelimit
|
||||
var headerNextReset = DateTimeOffset.UtcNow + headers.ResetAfter.Value; // todo: server time
|
||||
if (_nextReset == null || headerNextReset > _nextReset)
|
||||
{
|
||||
_logger.Debug("{BucketKey}/{BucketMajor}: Received reset time {NextReset} from server (after: {NextResetAfter}, remaining: {Remaining}, local remaining: {LocalRemaining})",
|
||||
_logger.Verbose("{BucketKey}/{BucketMajor}: Received reset time {NextReset} from server (after: {NextResetAfter}, remaining: {Remaining}, local remaining: {LocalRemaining})",
|
||||
Key, Major, headerNextReset, headers.ResetAfter.Value, headers.Remaining, Remaining);
|
||||
|
||||
_nextReset = headerNextReset;
|
||||
|
Reference in New Issue
Block a user