Skip to main content
Glama
Log4NetAdapter.cs2.58 kB
#if LOG4NET using System.Collections.Generic; using log4net.Appender; using log4net.Core; namespace AI.Logging.Adapters { /// <summary> /// log4net appender that forwards logs to AI Logger /// </summary> public class AILoggerAppender : AppenderSkeleton { private readonly AILogger logger; /// <summary> /// Create a new AI Logger appender /// </summary> public AILoggerAppender() { this.logger = new AILogger("log4net"); } /// <summary> /// Create a new AI Logger appender with the specified logger /// </summary> /// <param name="logger">AI Logger to forward logs to</param> public AILoggerAppender(AILogger logger) { this.logger = logger; } /// <summary> /// Append a logging event /// </summary> /// <param name="loggingEvent">Logging event to append</param> protected override void Append(LoggingEvent loggingEvent) { var level = ConvertLogLevel(loggingEvent.Level); var message = loggingEvent.RenderedMessage; var properties = new Dictionary<string, object>(); // Extract properties if (loggingEvent.Properties != null) { foreach (var key in loggingEvent.Properties.GetKeys()) { properties[key] = loggingEvent.Properties[key]; } } logger.Log(level, message, new { loggerName = loggingEvent.LoggerName, properties = properties, exception = loggingEvent.ExceptionObject != null ? new { message = loggingEvent.ExceptionObject.Message, stackTrace = loggingEvent.ExceptionObject.StackTrace, type = loggingEvent.ExceptionObject.GetType().FullName } : null, threadName = loggingEvent.ThreadName, timeStamp = loggingEvent.TimeStamp }); } private LogLevel ConvertLogLevel(Level level) { if (level == Level.Debug) return LogLevel.Debug; if (level == Level.Info) return LogLevel.Info; if (level == Level.Warn) return LogLevel.Warning; if (level == Level.Error) return LogLevel.Error; if (level == Level.Fatal) return LogLevel.Critical; return LogLevel.Info; } } } #endif

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TSavo/Unity-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server