1 // -----------------------------------------------------------------------
2 // <copyright file="LogConsoleViewModel.cs" company="Microsoft">
3 // TODO: Update copyright text.
5 // -----------------------------------------------------------------------
7 using System.ComponentModel.Composition;
8 using System.Reflection;
10 using log4net.Appender;
12 using log4net.Repository.Hierarchy;
14 namespace Pithos.Client.WPF.LogConsole
17 using System.Collections.Generic;
22 /// TODO: Update summary.
24 [Export(typeof(LogConsoleViewModel))]
25 public class LogConsoleViewModel:Screen
27 private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
29 private readonly MemoryAppender _memoryAppender;
30 private BindableCollection<LoggingEvent> _events;
32 public LogConsoleViewModel()
34 var loggerRepository = (Hierarchy)log4net.LogManager.GetRepository();
36 var appenders = loggerRepository.GetAppenders();
38 _memoryAppender= appenders.OfType<MemoryAppender>().FirstOrDefault();
39 if (_memoryAppender == null)
41 _memoryAppender = new MemoryAppender{Name="MemoryAppender"};
42 _memoryAppender.ActivateOptions();
43 loggerRepository.Root.AddAppender(_memoryAppender);
44 loggerRepository.RaiseConfigurationChanged(EventArgs.Empty);
49 private void RefreshEvents()
51 Events =new BindableCollection<LoggingEvent>(_memoryAppender.GetEvents());
54 protected BindableCollection<LoggingEvent> Events
61 NotifyOfPropertyChange(()=>Events);