Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> свой Event Log 
:(
    Опции темы
Lazin
Дата 22.11.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



Как известно в винде есть несколько журналов событий: Application, System, Security итд В MSDN есть упоминание о том, что можно создавать свой собственный журнал. 
Я создал ключи в реестре(в программе EventViewer он появился), затем попытался записать туда данные так-же как в Application log, но сообщение добавилось в Application log, хотя источник описан в моем логе... Далее я попытался открыть его через OpenEventLog, все получилось, но теперь Event Viewer не видит экзешник со строковым ресурсом..
Объясните мне что со всем этим делать. 
PM MAIL Skype GTalk   Вверх
dumb
Дата 22.11.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



без пол-литры не разберешься: код в студию!  smile
PM MAIL   Вверх
Lazin
Дата 23.11.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



Вот код отправляющий сообщение
Код

int _tmain(int argc, _TCHAR* argv[])
{
    //HANDLE hEventLog = RegisterEventSource (NULL, "SampleEventLog");
    HANDLE hEventLog = OpenEventLog(NULL, "OIK");
    LPCSTR str[] = {"SampleEventLog", "TEST EVENT йа ошипко"};

    BOOL bSuccess = ReportEvent(
        hEventLog,
        EVENTLOG_WARNING_TYPE,
        CAT_GENERAL,
        LOG_EVENT_WARNING, 
        NULL,
        2,
        0,
        str,
        NULL
    );

    bSuccess = ReportEvent(
        hEventLog,
        EVENTLOG_ERROR_TYPE,
        CAT_DATA,
        LOG_EVENT_ERROR, 
        NULL,
        2,
        0,
        str,
        NULL
    );

    //DeregisterEventSource( hEventLog );
    return 0;
}

вот mc-файл
Код

; /* --------------------------------------------------------
; HEADER SECTION
;*/
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
               Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
               Warning=0x2:STATUS_SEVERITY_WARNING
               Error=0x3:STATUS_SEVERITY_ERROR
              )
;
;
FacilityNames=(System=0x0:FACILITY_SYSTEM
               Runtime=0x2:FACILITY_RUNTIME
               Stubs=0x3:FACILITY_STUBS
               Io=0x4:FACILITY_IO_ERROR_CODE
              )
;
;/* ------------------------------------------------------------------
; MESSAGE DEFINITION SECTION
;*/

MessageIdTypedef=WORD

MessageId=0x1
SymbolicName=CAT_GENERAL
Language=English
_General_
.

MessageId=0x2
SymbolicName=CAT_SYSTEM
Language=English
_System_
.

MessageId=0x3
SymbolicName=CAT_IO
Language=English
_IO_
.

MessageId=0x4
SymbolicName=CAT_DATA
Language=English
_DATA_
.

MessageId=0x5
SymbolicName=CAT_NETWORK
Language=English
_NETWORK_
.

MessageId=0x6
SymbolicName=CAT_INTERPROC
Language=English
_INTERPROC_
.



MessageIdTypedef=DWORD

MessageId=0x100
Severity=Informational
Facility=Runtime
SymbolicName=LOG_EVENT_INFORMATION
Language=English
Process %1 message:%r%2 
.

MessageId=0x101
Severity=Warning
Facility=Runtime
SymbolicName=LOG_EVENT_WARNING
Language=English
Process %1 warning:%r%2
.

MessageId=0x102
Severity=Error
Facility=Runtime
SymbolicName=LOG_EVENT_ERROR
Language=English
Process %1 error:%r%2
.


Я создаю ключ в реестре, для создания отдельного журнала событий
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\OIK
И создаю в нем источник событий
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\OIK\SampleEventLog
в этом ключе есть такие поля
        CategoryMessageFile - путь к моему exe файлу, содержащему ресурс, описывающий категории сообщений
        EventMessageFile - путь к моему exe файлу, содержащему ресурс, описывающий типы событий
    TypesSupported - маска событий - разрешены события всех типов
    CategoryCount - количество категорий событий
В результате сообщения в лог событий записываются, но EventVwr не видит exe файл в котором содержится ресурс, с описанием формата (он получается при компиляции mc файла, и инклудится в rc файле).
То-же самое прекрасно работает если источник сообщения находится в Application логе (источник сообщений описан в ветке реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\Application, и лог открывается функцией RegisterEventSource)

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  eventVwr2.JPG 62,64 Kb
PM MAIL Skype GTalk   Вверх
dumb
Дата 23.11.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



оставь все как есть, но замени открытие OpenEventLog на RegisterEventSource: т.е. раскомментируй 3ю строку и закомментируй 4ую. smile
PM MAIL   Вверх
Lazin
Дата 23.11.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 8
Всего: 154



Цитата(dumb @  23.11.2007,  14:39 Найти цитируемый пост)
оставь все как есть, но замени открытие OpenEventLog на RegisterEventSource: т.е. раскомментируй 3ю строку и закомментируй 4ую.

Так работает, но только категории в виде чисел отображаются.
и еще...
Я попробовал записать большое количество данных в event log. Установил параметр Max log size = 4194240K , when maximum log size is reached - установил параметр Overwrite events as needed. При этом, при достижении максимального размера лога, система повисает  smile 
может я что-то делаю не так?

Добавлено через 3 минуты и 41 секунду
может event log не предназначен для использования таких больших журналов, и лучше просто писать в файл? По крайней мере Application log по умолчанию имеет совсем небольшой размер.
PM MAIL Skype GTalk   Вверх
dumb
Дата 23.11.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(Lazin @  23.11.2007,  15:39 Найти цитируемый пост)
только категории в виде чисел отображаются.
проверь корректность ключей CategoryMessageFile, CategoryCount.

Цитата(Lazin @  23.11.2007,  15:39 Найти цитируемый пост)
может event log не предназначен для использования таких больших журналов
вобщем так и есть:
http://support.microsoft.com/kb/183097
http://support.microsoft.com/kb/312571

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.