zoukankan      html  css  js  c++  java
  • Colour your Log4Net events in your RichTextBox zz

    You’re most probably here because you have already read my article How to watch your log through your application in Log4Net and you’re thinking “that’s great, but I need to somehow differentiate all of this output!” – either that or you just really need a handy way to format certain keywords within your RichTextBox.

    Either way, here’s my solution. First of all define your logging levels (or keywords) within your RichTextBox container:

    Dictionary levels = new Dictionary();
    

    should be defined somewhere within your Form class, probably at the top. This will create a container of key strings that will be your keywords, associated to particular colours that you want these keywords to be coloured within your RichTextBox. Then you need to populate it within your constructor:

    // Add colours to correspond to given log levels
    levels.Add("INFO", Color.Green);
    levels.Add("WARN", Color.Yellow);
    levels.Add("ERROR", Color.Red);
    levels.Add("DEBUG", Color.Blue);
    

    Next you need to write a function that will iterate through each of these levels/keywords, and search for each instance within your text. Once you’ve found each one you just need to select the word and set the selection colour to the colour that corresponds with that keyword:

    private RichTextBox FormatLogColours(RichTextBox textbox) {
    // Iterate through each level
    foreach (var level in levels) {
        int pos = 0;
    
        // And look for every instance of it within our text
        while ((pos = textbox.Text.IndexOf(level.Key, pos)) > 0) {
            // Then select the text by getting the position and selecting from the position for the length of said level
            textbox.Select(pos, level.Key.Length);
    
            // And then set the corresponding colour
            textbox.SelectionColor = level.Value;
    
            pos++;
         }
      }
    
      return textbox;
    }
    

    Once you have this function defined you can essentially use it anywhere relevant. In the case of our previous article this would be write after our RichTextBox is updated by our LogWatcher event:

    LogTextbox = FormatLogColours(LogTextbox);
    

    Nice and simple! I hope this helps someone, even if it’s somewhere to start – you could easily expand it to cover all of the remaining levels, the ones used here are just the ones I used myself but there are many more or you could even expand it to the enter line by looking for the prior and after the current keyword. If you think of anything good please feel free to add a link in the comments below!

  • 相关阅读:
    12.19手动 项目部署
    12.19 redis缓存
    12.19 redis缓存
    用压测模拟并发、并发处理(synchronized,redis分布式锁)
    12.19 异常捕获补充
    app提交版本更新的流程
    变量
    类型转换的判别
    本文档中使用的伪类型
    Callbacks
  • 原文地址:https://www.cnblogs.com/zeroone/p/3371470.html
Copyright © 2011-2022 走看看