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();
        }
示例#2
0
        /// <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);
        }