RichTextBoxAppender使用log4net换句话说没有xmlapp.config?使用System.Windows.Forms;使用系统绘图;使用log4net;使用log4net.Core;使用log4net.Appender;使用log4net.Util;namespaceVip.Logging{//////RichTextBoxAppender的描述。///publicclassRichTextBoxAppender:AppenderSkeleton{#region私有实例字段privateRichTextBoxrichTextBox=null;私人表格containerForm=null;privateLevelMappinglevelMapping=newLevelMapping();私有intmaxTextLength=100000;#endregionprivatedelegatevoidUpdateControlDelegate(LoggingEventloggingEvent);#region构造函数publicRichTextBoxAppender(RichTextBoxmyRichTextBox):base(){richTextBox=myRichTextBox;containerForm=(Form)richTextBox.Parent;}#endregionprivatevoidUpdateControl(LoggingEventloggingEvent){//如果缓冲区太长//所以定期清除缓冲区if(richTextBox.TextLength>maxTextLength){richTextBox.Clear();richTextBox.AppendText(string.Format("(清除日志长度最大值:{0})n",maxTextLength));}//寻找样式映射LevelTextStyleselectedStyle=levelMapping.Lookup(loggingEvent.Level)asLevelTextStyle;if(selectedStyle!=null){//设置要附加的文本的颜色richTextBox.SelectionBackColor=selectedStyle.BackColor;richTextBox.SelectionColor=selectedStyle.TextColor;//根据需要更改选择字体//缺少的设置将替换为控件上的字体设置if(selectedStyle.Font!=null){//设置字体系列、大小和样式}elseif(selectedStyle.PointSize>0&&richTextBox.Font.SizeInPoints!=selectedStyle.PointSize){//使用控件的字体系列,设置大小和样式floatsize=selectedStyle.PointSize>0.0f?selectedStyle.PointSize:richTextBox.Font.SizeInPoints;richTextBox.SelectionFont=newFont(richTextBox.Font.FontFamily.Name,size,selectedStyle.FontStyle);}elseif(richTextBox.Font.Style!=selectedStyle.FontStyle){//使用控件的字体系列和大小,设置样式richTextBox.SelectionFont=newFont(richTextBox.Font,selectedStyle.FontStyle);}}richTextBox.AppendText(RenderLoggingEvent(loggingEvent));}protectedoverridevoidAppend(LoggingEventLoggingEvent){if(richTextBox.InvokeRequired){richTextBox.Invoke(newUpdateControlDelegate(UpdateControl),newobject[]{LoggingEvent});}else{UpdateControl(LoggingEvent);}}publicvoidAddMapping(LevelTextStylemapping){levelMapping.Add(mapping);}publicoverridevoidActivateOptions(){base.ActivateOptions();levelMapping.ActivateOptions();}protectedoverrideboolRequiresLayout{get{returntrue;}}}publicclassLevelTextStyle:LevelMappingEntry{私有颜色文本颜色;私人颜色背景颜色;privateFontStylefontStyle=FontStyle.Regular;私人浮动pointSize=0.0f;私人布尔粗体=假;私人布尔斜体=假;私有字符串fontFamilyName=null;私有字体font=null;publicboolBold{get{returnbold;}设置{粗体=值;}}publicboolItalic{get{returnitalic;}设置{斜体=值;}}publicfloatPointSize{get{returnpointSize;}设置{pointSize=值;}}//////初始化对象的选项//////解析属性publicoverridevoidActivateOptions(){base.ActivateOptions();如果(粗体)fontStyle|=FontStyle.Bold;如果(斜体)fontStyle|=FontStyle.Italic;if(fontFamilyName!=null){floatsize=pointSize>0.0f?点大小:8.25f;尝试{font=newFont(fontFamilyName,size,fontStyle);}catch(Exception){font=newFont("Arial",8.25f,FontStyle.Regular);}}}publicColorTextColor{get{returntextColor;}设置{textColor=val等;}}publicColorBackColor{get{returnbackColor;}set{backColor=value;}}publicFontStyleFontStyle{get{returnfontStyle;}设置{fontStyle=值;}}publicFontFont{get{返回字体;}设置{字体=值;}}}}publicpartialclassMainForm:Form{privatestaticstringlocPath=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);私有静态字符串dskPath=Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);私有RichTextBoxAppenderrba;私人MessageBoxAppender工商管理硕士;publicMainForm(){InitializeComponent();如果(!Global.logger.Logger.Repository.Configured){rba=newRichTextBoxAppender(richTextBoxLog);rba.Threshold=Level.All;rba.Layout=newPatternLayout("%date{dd-MM-yyyyHH:mm:ss.fff}%5level%message%n");LevelTextStyleilts=newLevelTextStyle();ilts.Level=Level.Info;ilts.TextColor=Color.Yellow;ilts.PointSize=10.0f;rba.AddMapping(ilts);水平文本圣yledlts=newLevelTextStyle();dlts.Level=Level.Debug;dlts.TextColor=Color.LightBlue;dlts.PointSize=10.0f;rba.AddMapping(dlts);LevelTextStylewlts=newLevelTextStyle();wlts.Level=Level.Warn;wlts.TextColor=Color.Chartreuse;wlts.PointSize=10.0f;rba.AddMapping(wlts);LevelTextStyleelts=newLevelTextStyle();elts.Level=Level.Error;elts.TextColor=Color.Crimson;elts.BackColor=Color.Cornsilk;elts.PointSize=10.0f;rba.AddMapping(elts);BasicConfigurator.Configure(rba);rba.ActivateOptions();mba=newMessageBoxAppender();mba.Layout=newPatternLayout("%date{dd-MM-yyyyHH:mm:ss.fff}%5level%message%n");mba.Threshold=Level.Error;BasicConfigurator.Configure(mba);mba.ActivateOptions();RollingFileAppenderfa=newRollingFileAppender();fa.AppendToFile=true;fa.Threshold=log4net.Core.Level.All;fa.RollingStyle=RollingFileAppender.RollingMode.Size;fa.MaxFileSize=100000;fa.MaxSizeRollBackups=3;文件e=dskPath+@"FgPleoraLog.txt";fa.Layout=newlog4net.Layout.PatternLayout("%date{dd-MM-yyyyHH:mm:ss.fff}%5level%message(%logger{1}:%line)%n");log4net.Config.BasicConfigurator.Configure(fa);fa.ActivateOptions();@GMAN的回答是正确的,但是Invoke=>BeginInvoke可以是线程安全的你可以看看我为什么我的log4net死锁?以上就是C#学习教程:RichTextBoxAppender使用log4net分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
