Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / LogConsole / LogConsoleViewModel.cs @ 6f03d6e1

History | View | Annotate | Download (2 kB)

1
// -----------------------------------------------------------------------
2
// <copyright file="LogConsoleViewModel.cs" company="Microsoft">
3
// TODO: Update copyright text.
4
// </copyright>
5
// -----------------------------------------------------------------------
6

    
7
using System.ComponentModel.Composition;
8
using System.Reflection;
9
using Caliburn.Micro;
10
using log4net.Appender;
11
using log4net.Core;
12
using log4net.Repository.Hierarchy;
13

    
14
namespace Pithos.Client.WPF.LogConsole
15
{
16
    using System;
17
    using System.Collections.Generic;
18
    using System.Linq;
19
    using System.Text;
20

    
21
    /// <summary>
22
    /// TODO: Update summary.
23
    /// </summary>
24
    [Export(typeof(LogConsoleViewModel))]
25
    public class LogConsoleViewModel:Screen
26
    {
27
        private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
28

    
29
        private readonly MemoryAppender _memoryAppender;
30
        private IObservableCollection<LoggingEvent> _events;
31

    
32
        public LogConsoleViewModel()
33
        {
34
            var loggerRepository = (Hierarchy)log4net.LogManager.GetRepository();
35

    
36
            var appenders = loggerRepository.GetAppenders();
37
            
38
            _memoryAppender= appenders.OfType<MemoryAppender>().FirstOrDefault();
39
            if (_memoryAppender == null)
40
            {
41
                _memoryAppender = new MemoryAppender{Name="MemoryAppender"};
42
                _memoryAppender.ActivateOptions();
43
                loggerRepository.Root.AddAppender(_memoryAppender);
44
                loggerRepository.RaiseConfigurationChanged(EventArgs.Empty);
45
            }
46
            RefreshEvents();
47
        }
48

    
49
        private void RefreshEvents()
50
        {
51
            Events =new BindableCollection<LoggingEvent>(_memoryAppender.GetEvents());
52
        }
53

    
54
        protected IObservableCollection<LoggingEvent> Events
55
        {
56
            get {
57
                return _events;
58
            }
59
            set {
60
                _events = value;
61
                NotifyOfPropertyChange(()=>Events);
62
            }
63
        }
64
    }
65
}