voile/Voile/DockContents/DockLog.cs
2026-01-09 00:17:11 +01:00

72 lines
2.3 KiB
C#

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 WeifenLuo.WinFormsUI.Docking;
namespace Voile.DockContents
{
public partial class DockLog : DockContent, IAppender
{
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public DockLog()
{
InitializeComponent();
richTextBox1.AllowDrop = true;
richTextBox1.DragEnter += RichTextBox1_DragEnter;
richTextBox1.DragDrop += RichTextBox1_DragDrop;
}
public void Logger(string s)
{
richTextBox1.SuspendLayout();
richTextBox1.AppendText(s + Environment.NewLine);
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
richTextBox1.ResumeLayout();
}
private void RichTextBox1_DragDrop(object? sender, DragEventArgs e)
{
}
private void RichTextBox1_DragEnter(object? sender, DragEventArgs e)
{
}
bool wasInitalized;
public void InitalizeLogging()
{
if (wasInitalized)
throw new Exception("already initalized");
var hierarchy = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
hierarchy.Root.AddAppender(this);
hierarchy.Root.Level = log4net.Core.Level.All;
log4net.Config.BasicConfigurator.Configure(hierarchy);
wasInitalized = true;
}
private log4net.Layout.PatternLayout logLayout;
public void DoAppend(LoggingEvent loggingEvent)
{
if (logLayout == null)
{
logLayout = new log4net.Layout.PatternLayout();
logLayout.ConversionPattern = "%date %level %logger - %message";
logLayout.ActivateOptions();
}
string v = logLayout.Format(loggingEvent);
Logger(v);
}
}
}