// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.Extensions.Logging; namespace Libuv { public class LibuvTrace : ILibuvTrace { // ConnectionRead: Reserved: 3 private static readonly Action _connectionPause = LoggerMessage.Define(LogLevel.Debug, new EventId(4, nameof(ConnectionPause)), @"Connection id ""{ConnectionId}"" paused."); private static readonly Action _connectionResume = LoggerMessage.Define(LogLevel.Debug, new EventId(5, nameof(ConnectionResume)), @"Connection id ""{ConnectionId}"" resumed."); private static readonly Action _connectionReadFin = LoggerMessage.Define(LogLevel.Debug, new EventId(6, nameof(ConnectionReadFin)), @"Connection id ""{ConnectionId}"" received FIN."); private static readonly Action _connectionWriteFin = LoggerMessage.Define(LogLevel.Debug, new EventId(7, nameof(ConnectionWriteFin)), @"Connection id ""{ConnectionId}"" sending FIN because: ""{Reason}"""); // ConnectionWrite: Reserved: 11 // ConnectionWriteCallback: Reserved: 12 private static readonly Action _connectionError = LoggerMessage.Define(LogLevel.Debug, new EventId(14, nameof(ConnectionError)), @"Connection id ""{ConnectionId}"" communication error."); private static readonly Action _connectionReset = LoggerMessage.Define(LogLevel.Debug, new EventId(19, nameof(ConnectionReset)), @"Connection id ""{ConnectionId}"" reset."); private readonly ILogger _logger; public LibuvTrace(ILogger logger) => _logger = logger; public void ConnectionRead(string connectionId, int count) { // Don't log for now since this could be *too* verbose. // Reserved: Event ID 3 } public void ConnectionReadFin(string connectionId) { _connectionReadFin(_logger, connectionId, null); } public void ConnectionWriteFin(string connectionId, string reason) { _connectionWriteFin(_logger, connectionId, reason, null); } public void ConnectionWrite(string connectionId, int count) { // Don't log for now since this could be *too* verbose. // Reserved: Event ID 11 } public void ConnectionWriteCallback(string connectionId, int status) { // Don't log for now since this could be *too* verbose. // Reserved: Event ID 12 } public void ConnectionError(string connectionId, Exception ex) { _connectionError(_logger, connectionId, ex); } public void ConnectionReset(string connectionId) { _connectionReset(_logger, connectionId, null); } public void ConnectionPause(string connectionId) { _connectionPause(_logger, connectionId, null); } public void ConnectionResume(string connectionId) { _connectionResume(_logger, connectionId, null); } public IDisposable BeginScope(TState state) => _logger.BeginScope(state); public bool IsEnabled(LogLevel logLevel) => _logger.IsEnabled(logLevel); public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) => _logger.Log(logLevel, eventId, state, exception, formatter); } }