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);
                    });
                }
            }
        }
    }
  • 相关阅读:
    gethostbyname() 用域名或主机名获取IP地址
    recv, recvfrom, recvmsg 从套接口接收一个消息
    献给初学者:谈谈如何学习Linux操作系统
    Linux 文件处理 之扫描目录 DIR
    Python 使用sys模块
    struct dirent和DIR结构体
    职场人必读的文字只花10分钟影响你一辈子!
    信号量与线程互斥锁的区别
    send/sendto/sendmsg函数解析
    互联网常见Open API文档资源
  • 原文地址:https://www.cnblogs.com/mrfangzheng/p/2795133.html
Copyright © 2011-2022 走看看