// -----------------------------------------------------------------------
//
// TODO: Update copyright text.
//
// -----------------------------------------------------------------------
using System.ComponentModel.Composition;
using System.Reflection;
using Caliburn.Micro;
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
namespace Pithos.Client.WPF.LogConsole
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
///
/// TODO: Update summary.
///
[Export(typeof(LogConsoleViewModel))]
public class LogConsoleViewModel:Screen
{
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly MemoryAppender _memoryAppender;
private BindableCollection _events;
public override string DisplayName
{
get
{
return "Pithos+ Log Console";
}
set
{
base.DisplayName = value;
}
}
public LogConsoleViewModel()
{
var loggerRepository = (Hierarchy)log4net.LogManager.GetRepository();
var appenders = loggerRepository.GetAppenders();
_memoryAppender= appenders.OfType().FirstOrDefault();
/*
if (_memoryAppender == null)
{
_memoryAppender = new MemoryAppender
{
Name="MemoryAppender",
Layout=new SimpleLayout(),
Threshold=Level.All
};
_memoryAppender.ActivateOptions();
loggerRepository.Root.AddAppender(_memoryAppender);
loggerRepository.RaiseConfigurationChanged(EventArgs.Empty);
}
*/
RefreshEvents();
}
public void RefreshEvents()
{
Events =new BindableCollection(_memoryAppender.GetEvents());
}
public BindableCollection Events
{
get {
return _events;
}
set {
_events = value;
NotifyOfPropertyChange(()=>Events);
}
}
}
}