• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'2017/06/06'에 해당되는 글 1건

  • 2017.06.06 log4net TextBox Appender

log4net TextBox Appender

기술자료/.NET 2017. 6. 6. 20:54

C#에서 TextBox에 log4net을 띄우기 위한 방법.

TextBox가 위치한 Form의 생성자 안에서 TextBoxAppender.SetupTextBoxAppend 를 호출하면 된다.
인자값으로는 Textbox 인스턴스와 PatternLayout에 넣는 PatternFormat 문자열만 넣으면 된다.


TextBoxAppender.SetupTextBoxAppend(txtLogs, "%date{HH:mm:ss,fff} %-5level %-33logger - %message%newline");
namespace Logger
{
    public class TextBoxAppender : AppenderSkeleton
    {
        static public void SetupTextBoxAppend(TextBox textbox, string sLayerFormat)
        {
            TextBoxAppender textBoxAppender = new TextBoxAppender();
            textBoxAppender.AppenderTextBox = textbox;
            textBoxAppender.Threshold = log4net.Core.Level.All;
            ILayout layout = null;
            if (string.IsNullOrEmpty(sLayerFormat))
            {
                layout = new log4net.Layout.SimpleLayout();
            }
            else
            {
                PatternLayout layoutPattern = new PatternLayout(sLayerFormat);
                layout = layoutPattern;                                
            }            
            textBoxAppender.Layout = layout;
            textBoxAppender.Name = string.Format("TextBoxAppender_{0}", textbox.Name);            
            textBoxAppender.ActivateOptions();
            Hierarchy h = (Hierarchy)log4net.LogManager.GetRepository();
            h.Root.AddAppender(textBoxAppender);
        }


        private TextBox _textBox;
        public TextBox AppenderTextBox
        {
            get
            {
                return _textBox;
            }
            set
            {
                _textBox = value;
            }
        }

        override protected bool RequiresLayout
        {
            get { return true; }
        }

        protected override void Append(log4net.Core.LoggingEvent loggingEvent)
        {
            if (_textBox == null)
                return;
            try
            {             
                string sMessage  = base.RenderLoggingEvent(loggingEvent);
                _textBox.BeginInvoke(new WriteMessageHandler(WriteMessage), sMessage);
            }
            catch
            {

            }
        }

        private delegate void WriteMessageHandler(string sMessage);

        private void WriteMessage(string sMessage)
        {
                _textBox.AppendText(sMessage);                
                _textBox.Select(_textBox.TextLength - 1, 0);
                _textBox.ScrollToCaret();
        }
    }
}


728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2017/06   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Google Apps Engine WSS Visual Studio me2sms 불만 블로그 친구 twi2me 개발환경 Tutorial me2dayzm 것 비스킷 java me2photo SharePoint 인터파크 지름신 수 moss 오류 협업 MOSS 2007 2010 좀 windows e-book Azure 매뉴얼 Buscuit

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바