20 апреля 2007

FirebugTarget — показать то, что скрыто

Началась история с того, что я так и не смог привыкнуть к использованию trace() во Flex Builder’e. А после того, как перешел на разработку во FlashDevelop, я вообще перестал пользоваться trace’ом, и если возникала необходимость «показать то, что скрыто» прибегал к помощи Alert.show(). Но сами понимаете, с таким подходом далеко не уйдешь. Поэтому я решил написать свой простенький логгер, но не успел, его уже написали до меня, и при этом наделили весьма неплохим функционалом.

И так, пакет mx.logging.* содержит все, что нужно для организации логгинга в вашем приложении. С содержимым пакета и с тем, как организовать логгинг, можно ознакомиться в ActionScript 3.0 Language and Components Reference и в книге Building and Deploying Flex 2 Applications официальной документации по Flex 2. Скажу только одно, что за обработку сообщений логгера должны отвечать наследники класса mx.logging.AbstractTarget, например, mx.logging.targets.LineFormattedTarget, который предоставляет возможности по форматированию сообщения логгера.

Ну что ж, писать свой логгер мне не пришлось (смогу поспать лишний час – другой =)), мне достаточно будет написать свой таргет. Остается вопрос, куда этот таргет будет вываливать сообщения логгера? И тут я вспомнил про консольку Firebug. Firebug, если вдруг кто не знает, – это расширение для Firefox, предназначенное в первую очередь для отладки JavaScript, а также обладающее и другим не менее полезным функционалом. Проще говоря — это мастхэв.

Дело за написанием своего таргета не стало. Использовать LineFormattedTarget в качестве надкласса я не стал, а решил наследоваться от AbstractTarget. В результате у меня получился FirebugTarget, который, несмотря на то, что наследуется не от LineFormattedTarget, обладает теми же возможностями по форматированию сообщений.

В итоге я получил весьма неплохой, на мой взгляд, способ «подсмотреть то, что скрыто». Если вам это затея показалась интересной, то вы можете посмотреть скриншот и скачать исходники, чтобы посмотреть на FirebugTarget в действии.

Легкой вам отладки!

Теги:


11 комментариев к записи:

Юрий Яровой [ 28 апреля , 2007 в 18:32 ]

Все таки хочу показать, как пользоваться логгером и FirebugTarget в ActionScript.

package {

	// Импортируем нужные классы.
	import mx.logging.ILogger;
	import mx.logging.Log;
	import com.yarovoy.vooparker.logging.targets.FirebugTarget;

	public class FirebugTargetASTest {

		public function FirebugTargetASTest() {
			initLogging();
			testLogging();
		}

		/**
		 * Инициализирует процесс логгинга.
		 */
		public function initLogging():void {
			// Будем использовать логгер с именем "TestLogger".
			var log:ILogger = Log.getLogger("TestLogger");
			// Создаем цель-представление
			// для отображения сообщений логгера.
			var target:FirebugTarget = new FirebugTarget();
			// Подписываем представление на сообщения логгера.
			target.addLogger(log);
		}

		/**
		 * Тестирует процесс логгинга.
		 */
		public function testLogging():void {
			Log.getLogger("TestLogger").debug("Это сообщение, предназначенное для дебага.");
			Log.getLogger("TestLogger").info("Это информационное сообщение.");
			Log.getLogger("TestLogger").error("Это сообщение об ошибке.");
			Log.getLogger("TestLogger").warn("Это предупреждение.");
			Log.getLogger("TestLogger").fatal("Фатальное действие приложения.");
		}

	}
}
A.V.Kozlovskij [ 22 июня , 2007 в 13:45 ]

Очень, очень, очень круто! Удобно! Спасибо! :)

rost [ 10 июля , 2007 в 21:31 ]

Реальный крутняк!

Vooparker [ 10 июля , 2007 в 22:23 ]

Спасибо. Очень приятно, что таргет пришелся по вкусу кому-то еще, кроме его автора :)

Constantiner [ 11 июля , 2007 в 01:07 ]

Да, отлично. Тоже полезная вещь. Я, кстати, давно привык пользоваться XPanel от Faratasystems. Я про него год назад даже писал. Тоже очень удобная штука.

Посмотрю как оно с Firebug :)

janvarev [ 22 июля , 2007 в 11:59 ]

Очень приятная вещь! У меня в CMS использовалась подгрузка Flex-модулей, все думал, как же отлаживать-то.

Мой рубль в копилку: написал простенький статический класс, который позволяет получать доступ к FirebugTarget без видимой инициализации. Достаточно написать

FirebugDebug.logger.info("Hello, world!");

Класс (и библиотека под Flex) лежит здесь: http://janvarev.ru/FirebugDebugLib

[...] Простая библиотека для отладки на AS3 с использованием FirebugTarget (Исходная статья от автора FirebugTarget). [...]

Constantiner [ 22 июля , 2007 в 16:12 ]

Кстати, для отладки модулей вполне можно пользоваться дебаггером. Простой способ описан тут.

[...] опубликовывал исходники FirebugTarget, я всего на всего хотел поделиться своим опытом [...]

Vooparker [ 24 июля , 2007 в 11:42 ]

2Janvarev: скрывая доступ к инициализации FirebugTarget мы лишаемся возможности форматировать сообщения логгера, что не есть хорошо. Изначально FirebugTarget был сделан как представление для логгера, и мне кажется не совсем удачным решение создавать отдельный логгер для одного таргета.
Хотя я на самом деле изначально заложил лишнее в FirebugTarget и разумнее было выделить два класса, один должен отвечать за отправку сообщений в консоль, а второй – за непосредственную обработку сообщений логгера. Что собственно и было сделано.
Еще раз оговорюсь, FirebugTarget не является (и не может являться) полноценным отладчиком, это всего лишь интсрумент (для кого-то удобный), чтобы “показать то, что скрыто”.

[...] Проще говоря — это мастхэв.  Подробнее читайте здесь и [...]

Оставьте свой комментарий:

Имя: *
* — обязательно для заполнения
Электропочта: *
Сайт:
Сообщение *
Коментировать
Коментировать