/// <summary> /// Creates and starts a binary log writer putting records down to the memory stream, which can be obtained remotely. /// </summary> /// <param name="maximumMemorySize">The maximum possible size of memory space occupied by log records.</param> /// <param name="logOptions">The options specifying what information will be saved into the log.</param> public static void SetUpLoggingToMemory(int maximumMemorySize, string logOptions) { lock (_accessToLocalMembers) { if (_memoryWritingWriter == null) { _memoryWritingStream = new MemoryWritingStream(maximumMemorySize); _memoryWritingWriter = new BinaryLogWriter(_memoryWritingStream); SetUpLoggingOptionsFromString(_memoryWritingWriter, GenuineLoggingServices.DefaultLoggingOptions); SetUpLoggingOptionsFromString(_memoryWritingWriter, logOptions); _remoteLogService = new RemoteLogService(_memoryWritingStream); RemotingServices.Marshal(_remoteLogService, GenuineLoggingServices.RemoteLogServiceObjectUri); Belikov.GenuineChannels.DirectExchange.DirectExchangeManager.RegisterGlobalServerService(GenuineLoggingServices.RemoteLogServiceObjectUri, _remoteLogService); Belikov.GenuineChannels.Security.SecuritySessionServices.SetGlobalKey(GenuineLoggingServices.LoggingSESSPName, new Belikov.GenuineChannels.Security.KeyProvider_SelfEstablishingSymmetric()); } GenuineLoggingServices.BinaryLogWriter = _memoryWritingWriter; } }
/// <summary> /// Stops putting down log records. /// </summary> public static void StopLogging() { lock (_accessToLocalMembers) { GenuineLoggingServices.BinaryLogWriter = null; if (_memoryWritingWriter != null) { RemotingServices.Disconnect(_remoteLogService); _remoteLogService.StopLogging(); _remoteLogService = null; _memoryWritingStream = null; _memoryWritingWriter = null; } } }