zoukankan      html  css  js  c++  java
  • log4net异步刷新 TextBox (试运行版)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using log4net.Core;


    namespace log4net_richtextbox
    {
        public partial class Form2 : Form
        {
            private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            private bool logWatching = true;
            private log4net.Appender.MemoryAppender logger;
            private Thread logWatcher;


            public Form2()
            {
                InitializeComponent();

                this.Closing += new CancelEventHandler(Form1_Closing);
                logger = new log4net.Appender.MemoryAppender();

                log4net.Config.BasicConfigurator.Configure(logger);

                logWatcher = new Thread(new ThreadStart(LogWatcher));
                logWatcher.Start();

            }

            void Form1_Closing(object sender, CancelEventArgs e)
            {
                logWatching = false;
                logWatcher.Join();

            }

            delegate void delOneStr(string log);
            void AppendLog(string _log)
            {
                if (txtLog.InvokeRequired)
                {
                    delOneStr dd = new delOneStr(AppendLog);
                    txtLog.Invoke(dd, new object[] { _log });
                }
                else
                {
                    StringBuilder builder;
                    if (txtLog.Lines.Length > 99)
                    {
                        builder = new StringBuilder(txtLog.Text);
                        builder.Remove(0, txtLog.Text.IndexOf('\r', 3000) + 2);
                        builder.Append(_log);
                        txtLog.Clear();
                        txtLog.AppendText(builder.ToString());
                    }
                    else
                    {
                        txtLog.AppendText(_log);
                    }
                }

            }

            private void LogWatcher()
            {
                while (logWatching)
                {
                    LoggingEvent[] events = logger.GetEvents();
                    if (events != null && events.Length > 0)
                    {
                        logger.Clear();
                        foreach (LoggingEvent ev in events)
                        {
                            string line = ev.LoggerName + ": " + ev.RenderedMessage + "\r\n";
                            AppendLog(line);
                        }
                    }
                    Thread.Sleep(500);
                }
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                log.Info(DateTime.Now.ToString());
            }

        }

    }

  • 相关阅读:
    C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本
    C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本
    C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本
    C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本
    《程序员,你伤不起》 回答热心爸爸读者的疑问
    入驻微信公众号平台【今日热点在线】、【大数据躺过的坑】和【九哥九嫂小日子】,欢迎关注
    入驻百家号【九哥聊IT】和【九哥九嫂小日子】,欢迎关注
    全网最详细的最新稳定OSSEC搭建部署(ossec-server(CentOS7.X)和ossec-agent(CentOS7.X))(图文详解)
    CentOS 7的安装详解
    全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)
  • 原文地址:https://www.cnblogs.com/i80386/p/2267781.html
Copyright © 2011-2022 走看看