void IServerModuleStateContext.Initialize() { // Activate logging LoggerManagement.ActivateLogging(this); LoggerManagement.AppendListenerToStream(ProcessLogMessage, LogLevel.Warning, Name); Logger.Log(LogLevel.Info, "{0} is initializing...", Name); // Get config and parse for container settings Config = ConfigManager.GetConfiguration <TConf>(); ConfigParser.ParseStrategies(Config, Strategies); // Initialize container with server module dll and this dll Container = ContainerFactory.Create(Strategies, GetType().Assembly) .Register <IParallelOperations, ParallelOperations>() // Register instances for this cycle .SetInstance(Config).SetInstance(Logger); OnInitialize(); // Execute SubInitializer var subInits = Container.ResolveAll <ISubInitializer>() ?? new ISubInitializer[0]; foreach (var subInitializer in subInits) { subInitializer.Initialize(Container); } Logger.Log(LogLevel.Info, "{0} initialized!", Name); // After initializing the module, all notifications are unnecessary Notifications.Clear(); }
/// <summary> /// Add a remote appender to the logging stream /// </summary> public int AddRemoteLogAppender(string name, LogLevel level) { Logger.Log(LogLevel.Info, "Added appender with name {0} and level {1}", name, level); var appender = new RemoteAppender(); if (string.IsNullOrEmpty(name) && level == LogLevel.Trace) { LoggerManagement.AppendListenerToStream(appender.BufferMessage); } else if (string.IsNullOrEmpty(name)) { LoggerManagement.AppendListenerToStream(appender.BufferMessage, level); } else if (level == LogLevel.Trace) { LoggerManagement.AppendListenerToStream(appender.BufferMessage, name); } else { LoggerManagement.AppendListenerToStream(appender.BufferMessage, level, name); } var id = 1; lock (_remoteAppenders) { int[] takenIds = _remoteAppenders.Keys.ToArray(); // Find first non taken id while (takenIds.Contains(id)) { id++; } _remoteAppenders[id] = appender; } return(id); }