|
Модераторы: gambit, Partizan |
|
Rockie |
|
||||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Привет!
я хочу сделать класс-логгер, который можно бы было подключать к разным проектам. К примеру чтобы и в консольном приложении и в WinApp можно бы было написать к примеру
Вообще у меня был класс логгера который писал к примеру в консоль, ULS, в текстовый файл.. я просто закомментачивал ненужные методы. но cейчас хочу его прикрутить и в WinApp и наконец-то сделать правильно. У меня есть рабочий вариант, который пишет из класса логгера в текстбокс формы(отбросим то что при записи на форум надо вызывать InvokeRequired, т.к. пример учебный) Это класс логгера. Он содержит в себе экземпляр формы и конструктор, который инстанцирует эту форму(экземпляр логгера мы создадим на форме)
А вот собсно форма. Форма содержит свойство "LogStream", которое в Set пишет в контрол-текстбокс. А сторонний класс может к этому свойству достучаться. Ну и собсно всё, по кнопке вызывается Message() стороннего класса-логгера, который пишет на форму:
Как сделать это правильнее - в данном варианте непонятно что делать для консольного приложения - закомментачивать конструктор с формой чтоли?.. и другой вопрос - если у меня ещё один сторонний класс, как на рисунке - как мне реализовывать логгер из него? тоже передавать форму и туда, бред какой-то.. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||||
|
|||||||
chupachups |
|
||||
Новичок Профиль Группа: Участник Сообщений: 0 Регистрация: 15.10.2008 Репутация: 1 Всего: 1 |
Нужно использовать интерфейсы. Для логера:
Для форм, консоли, файлов и прочего:
Для каждого "слушателя" логов реализуешь интерфейс ILogListner и кидаешь его в логер - AddListner(ILogListner listner). Логер должен иметь коллекцию слушателей и когда логеру говорят WriteMessage(string message) - он пробегает по всем слушателям и вызывает у них ProcessMessage(string message) Этот ответ добавлен с нового Винграда - http://vingrad.com |
||||
|
|||||
infarch |
|
|||
Опытный Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Вы лучше изучите для начала что-нибудь из готовых популярных логеров. NLog, Log4net...
Если вам чисто для фана, то попробуйте свой логер сделать по аналогии. Если же вам нужно готовое рабочее решение то возьмите один из них и не парьтесь. |
|||
|
||||
Rockie |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
infarch, ну мне и то и другое - чтобы один раз уже разобраться, и чтобы юзать в своих проектах. Часто возникает ситуация когда сначала логика пишется в консоли, а потом его надо запихнуть к примеру в asp.net вебчасть, или ещё куда.. Спасибо! chupachups, воо... Спасибо!! я если что ещё спрошу тут, может посоветуете правильно ли делаю.. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |