Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / LogConsole / LogConsoleViewModel.cs @ e9eab066

History | View | Annotate | Download (2.6 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.Layout;
13
using log4net.Repository.Hierarchy;
14

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

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

    
30
        private readonly MemoryAppender _memoryAppender;
31
        private BindableCollection<LoggingEvent> _events;
32

    
33

    
34
        public override string DisplayName
35
        {
36
            get
37
            {
38
                return "Pithos Log Console";
39
            }
40
            set
41
            {
42
                base.DisplayName = value;
43
            }
44
        }
45
        public LogConsoleViewModel()
46
        {
47
            var loggerRepository = (Hierarchy)log4net.LogManager.GetRepository();
48

    
49
            var appenders = loggerRepository.GetAppenders();
50
            
51
            _memoryAppender= appenders.OfType<MemoryAppender>().FirstOrDefault();
52
/*
53
            if (_memoryAppender == null)
54
            {
55
                _memoryAppender = new MemoryAppender
56
                                      {
57
                                          Name="MemoryAppender",
58
                                          Layout=new SimpleLayout(),
59
                                          Threshold=Level.All
60
                                      };                                
61
                _memoryAppender.ActivateOptions();
62
                loggerRepository.Root.AddAppender(_memoryAppender);
63
                loggerRepository.RaiseConfigurationChanged(EventArgs.Empty);
64
            }
65
*/
66
            RefreshEvents();            
67
        }
68

    
69
        public void RefreshEvents()
70
        {            
71
            Events =new BindableCollection<LoggingEvent>(_memoryAppender.GetEvents());
72
        }
73

    
74
        public BindableCollection<LoggingEvent> Events
75
        {
76
            get {
77
                return _events;
78
            }
79
            set {
80
                _events = value;
81
                NotifyOfPropertyChange(()=>Events);
82
            }
83
        }
84
    }
85
}