using log4net.Appender; using log4net.Core; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Voile.Common.Logging; using Voile.Common.Logging.Sinks; using WeifenLuo.WinFormsUI.Docking; namespace Voile.DockContents { public partial class DockLog : DockContent, IVoileLogSink { private static VoileLog4netSink log4netSink; private static VoileLogger logger; public DockLog() { InitializeComponent(); richTextBox1.AllowDrop = true; richTextBox1.DragEnter += RichTextBox1_DragEnter; richTextBox1.DragDrop += RichTextBox1_DragDrop; if (logger == null) { logger = VoileLogManager.GetLogger(this.GetType()); logger.Debug("Initalize DockLog"); } } public void Logger(string s) { richTextBox1.SuspendLayout(); richTextBox1.AppendText(s + Environment.NewLine); richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.ScrollToCaret(); richTextBox1.ResumeLayout(); } public void OnLogMessage(VoileLogMessage message) { Logger(String.Format("{0} {1} {2} - {3}", message.Timestamp, message.Level, message.SourceName, message.Message)); } private bool initalized; internal void InitalizeLogging() { if (initalized) { throw new Voile.Common.VoileException("Logging already initalized!"); } log4netSink = new VoileLog4netSink(); log4netSink.Initalize(); VoileLogManager.GetInstance().AddSink(this); initalized = true; } private void RichTextBox1_DragDrop(object? sender, DragEventArgs e) { } private void RichTextBox1_DragEnter(object? sender, DragEventArgs e) { } } }