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 |
} |