2015-12-17 3 views
0

Я whant для отображения NLog следа в RichTextBox в то же самое время, когда приложение выполняетПоказать NLog след в RichTextBox

logger.Trace("This is a Trace message"); 
logger.Debug("This is a Debug message"); 
logger.Info("This is an Info message"); 
logger.Warn("This is a Warn message"); 
logger.Error("This is an Error message"); 
logger.Fatal("This is a Fatal error message"); 

Имеет NLog любое глобальное событие, так что можно использовать его и заполнить RichTextBox?

Спасибо!

+1

Вы это видели: http://nlog-project.org/documentation/v2.0.1/html/T_NLog_Targets_RichTextBoxTarget.htm –

+1

Или https: // github.com/NLog/NLog/wiki/RichTextBox-target – stuartd

+1

или этот http://stackoverflow.com/questions/16743804/implementing-a-log-viewer-with-wpf – Byron

ответ

4

Мы должны установить https://www.nuget.org/packages/NLog.Windows.Forms

После использования NLog.Windows.Forms;

И, наконец, добавить код

private void FormMain_Load(object sender, EventArgs e) 
     { 
      NLog.Windows.Forms.RichTextBoxTarget target = new NLog.Windows.Forms.RichTextBoxTarget(); 
      target.Name = "RichTextBox"; 
      target.Layout = "${longdate} ${level:uppercase=true} ${logger} ${message}"; 
      target.ControlName = "richTextBoxMainLog"; 
      target.FormName = "FormMain"; 
      target.AutoScroll = true; 
      target.MaxLines = 10000; 
      target.UseDefaultRowColoringRules = false; 
      target.RowColoringRules.Add(
       new RichTextBoxRowColoringRule(
        "level == LogLevel.Trace", // condition 
        "DarkGray", // font color 
        "Control", // background color 
        FontStyle.Regular 
       ) 
      ); 
      target.RowColoringRules.Add(new RichTextBoxRowColoringRule("level == LogLevel.Debug", "Gray", "Control")); 
      target.RowColoringRules.Add(new RichTextBoxRowColoringRule("level == LogLevel.Info", "ControlText", "Control")); 
      target.RowColoringRules.Add(new RichTextBoxRowColoringRule("level == LogLevel.Warn", "DarkRed", "Control")); 
      target.RowColoringRules.Add(new RichTextBoxRowColoringRule("level == LogLevel.Error", "White", "DarkRed", FontStyle.Bold)); 
      target.RowColoringRules.Add(new RichTextBoxRowColoringRule("level == LogLevel.Fatal", "Yellow", "DarkRed", FontStyle.Bold)); 

      AsyncTargetWrapper asyncWrapper = new AsyncTargetWrapper(); 
      asyncWrapper.Name = "AsyncRichTextBox"; 
      asyncWrapper.WrappedTarget = target; 

      SimpleConfigurator.ConfigureForTargetLogging(asyncWrapper, LogLevel.Trace); 
     } 

Кроме того, необходимо настроить цель NLog.

<target xsi:type="RichTextBox" 
      name="target2" 
      layout="${message} ${rtb-link:link text in config}" 

      formName="Form1" 
      ControlName="richTextBoxMainLog" 
      autoScroll="true" 
      maxLines="20" 

      allowAccessoryFormCreation="false" 
      messageRetention="OnlyMissed" 

      supportLinks="true" 

      useDefaultRowColoringRules="true" /> 

Скачать образец проекта и проверить его https://github.com/NLog/NLog.Windows.Forms

 Смежные вопросы

  • Нет связанных вопросов^_^