• 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!

  • 相关阅读:
    进程
    并发编程小结
    操作系统发展史
    基于socketsever实现并发的socket编程
    UDP套接字
    粘包问题及解决
    socket套接字编程
    TCP协议与三次握手四次挥手
    OSI七层协议
    互联网的组成
  • 原文地址:https://www.cnblogs.com/zeroone/p/3371470.html
Copyright © 2020-2023  润新知