当前位置:主页   - 电脑 - 网站开发 - ASP.Net
Console小技巧——七彩输出
来源:网络   作者:   更新时间:2012-02-28
收藏此页】    【字号    】    【打印】    【关闭

  很多Console程序的输出都类似下面这张截图,黑底白字,在信息量较大的情况下很容易就将重要信息淹没在无关紧要的信息当中,给我们调试、跟踪带来了不必要的麻烦。为了解决这个问题都会将要输出的信息分级,然后过滤掉某部分无关紧要的信息,使得显示出来的信息都是比较重要的信息,例如Log4Net的Log等级。

Console小技巧——七彩输出

  图片看不清楚?请点击这里查看原图(大图)。

  Console有个 ForegroundColor 属性,按照一定的策略设置该属性就可以实现Console的七彩输出,效果如下图所示。同样恰当地设置 BackgroundColor 也会得到类似效果。

Console小技巧——七彩输出

  图片看不清楚?请点击这里查看原图(大图)。

  废话不说了,贴代码吧,OldLog方法是模拟传统的输出,黑底白字。NewLog方法是模拟七彩输出的。

class Logger
{
  public static void OldLog(Level level, string message)
  {
    Console.WriteLine
    (
      string.Format
      (
        "[{0}][{1}]t{2}",
        level.ToString(),
        DateTime.Now.ToString(),
        message
      )
    );
  }

  private static Mutex mutex = new Mutex();
  public static void NewLog(Level level, string message)
  {
    mutex.WaitOne();
    SetConsoleColor(level);
    Console.WriteLine
    (
      string.Format
      (
        "[{0}][{1}]t{2}",
        level.ToString(),
        DateTime.Now.ToString(),
        message
      )
    );
    ResetConsoleColor();
    mutex.ReleaseMutex();
  }
  private static void SetConsoleColor(Level level)
  {
    switch (level)
    {
      case Level.Info: Console.ForegroundColor = ConsoleColor.Green;
        break;
      case Level.Debug: Console.ForegroundColor = ConsoleColor.Blue;
        break;
      case Level.Warning: Console.ForegroundColor = ConsoleColor.Yellow;
        break;
      case Level.Error: Console.ForegroundColor = ConsoleColor.Red;
        break;
      case Level.Fatal: Console.ForegroundColor = ConsoleColor.White;
        Console.BackgroundColor = ConsoleColor.Red;
        break;
      default: Console.ForegroundColor = ConsoleColor.Cyan;
        break;
    }
  }
  private static void ResetConsoleColor()
  {
    Console.ForegroundColor = ConsoleColor.Cyan;
    Console.BackgroundColor = ConsoleColor.Black;
  }
}

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明