Как стать автором
Обновить

Логирование по-быстрому

Время на прочтение2 мин
Количество просмотров1.1K
Потребовалось тут отследить актуальное состояние часто меняющегося элемента. Было подозрение, что его кто то обнуляет. Сразу же отмел варианты с написанием логирования через файловую систему: Сильверлайту не разрешено писать, куда ему захочется. Поэтому был написан небольшой расширяющий метод, который выводит отладочную информацию в консоль браузера.

 public static class Extensions
  {
    public static void Log(this object obj)
    {
      HtmlWindow window = HtmlPage.Window;
      object isConsoleAvailable =
         window.Eval("typeof(console) != 'undefined' && typeof(console.log) != 'undefined'");

      if ( (isConsoleAvailable is bool) && (bool)isConsoleAvailable)
      {
        var console = (window.Eval("console.log") as ScriptObject);
        if (console != null)
        {
          console.InvokeSelf(obj);
        }
      }
    }
  }


* This source code was highlighted with Source Code Highlighter.


Вызывается очень просто: на объекте нужно просто вызвать метод Log().
Я обычно подготавливаю строку и логирую ее.

string message = string.Format("{0}: object {1} ScrollPosition = {2}",DateTime.Now.ToShortTimeString(),((ItemsControl)d).Name,e.NewValue.ToString());
      message.Log();


* This source code was highlighted with Source Code Highlighter.


Вот так это выглядит в FireFox (для просмотра нужен FireBug):


а вот так в IE8 (нужно только нажать F12 и перейти на вкладку Сценарий):


Этот метод подойдет, если вам нужно при дебаге посмотреть что-нибудь в проекте. Для долговременного логирования лучше конечно использовать Clog. Вот только он не поддерживает Silverlight 3.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область