using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Text; using log4net.Core; using ClientList = System.Collections.Generic.List; namespace LiveLogger4Log4Net { public class AppenderService : IL4NServer { #region IL4NServer Members private static RegistrationList clients = new RegistrationList(); bool IL4NServer.Register() { lock (clients) clients.Add(OperationContext.Current.GetCallbackChannel()); return true; } bool IL4NServer.RegisterForSpecificLogger(params String[] loggerNameList) { lock (clients) clients.Add(OperationContext.Current.GetCallbackChannel(), loggerNameList); return true; } #endregion /// /// Called by the appender, it append a log. /// /// public static void Append(LoggingEvent loggingEvent) { LogMessage message = new LogMessage() {Message = loggingEvent.MessageObject.ToString()}; lock (clients) { clients.InvokeOnAllClients(c => c.ReceiveLog(message), loggingEvent.LoggerName); } } } }