zoukankan      html  css  js  c++  java
  • Log4Net: TextBoxBaseAppender

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using log4net.Appender;
    using System.Windows.Forms;
    using log4net.Core;
    using log4net.Layout;

    namespace UI
    {
        /// <summary>
        
    /// Usage:
        
    ///     log4net.Config.BasicConfigurator.Configure();
        
    ///     var logPattern = "%date [%thread] %-5level %logger !%M - %message%newline";
        
    ///     var logAppender = new TextBoxBaseAppender()
        
    ///     {
        
    ///         TextBox = this.textBox2,
        
    ///         Layout = new PatternLayout(logPattern)
        
    ///     };
        
    ///     
        
    ///     ((log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetLoggerRepository()).Root.AddAppender(logAppender);
        
    /// </summary>
        public class TextBoxBaseAppender : AppenderSkeleton
        {
            public TextBoxBase TextBox { getset; }

            public TextBoxBaseAppender()
            {
            }

            protected override void Append(LoggingEvent loggingEvent)
            {
                if (this.TextBox == null)
                {
                    return;
                }

                if(!this.TextBox.IsHandleCreated)
                {
                    return;
                }

                if(this.TextBox.IsDisposed)
                {
                    return;
                }

                var patternLayout = this.Layout as PatternLayout;

                var str = string.Empty;
                if (patternLayout != null)
                {
                    str = patternLayout.Format(loggingEvent);

                    if (loggingEvent.ExceptionObject != null)
                    {
                        str += loggingEvent.ExceptionObject.ToString() + Environment.NewLine;
                    }
                }
                else
                {
                    str = loggingEvent.LoggerName + "-" + loggingEvent.RenderedMessage + Environment.NewLine;
                }

                if (!this.TextBox.InvokeRequired)
                {
                    this.TextBox.AppendText(str);
                }
                else
                {
                    this.TextBox.BeginInvoke((MethodInvoker)delegate
                    {
                        if (!this.TextBox.IsHandleCreated)
                        {
                            return;
                        }

                        if (this.TextBox.IsDisposed)
                        {
                            return;
                        }
                        this.TextBox.AppendText(str);
                    });
                }
            }
        }
    }
  • 相关阅读:
    java多线程调试
    nginx学习网站收录
    eclispe使用
    网站收集
    《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)
    深入理解计算机系统——第12章:用信号量同步线程
    《TCP/IP详解卷1:协议》——第5章 RARP:逆地址解析协议(转载)
    YYHS-Floor it(递推+矩阵乘法+快速幂)
    YYHS-数列
    (转)Tarjan应用
  • 原文地址:https://www.cnblogs.com/mrfangzheng/p/2795133.html
Copyright © 2011-2022 走看看