Я пытаюсь добавить монитор журнала во внутреннюю утилиту тестирования для службы Windows, над которой я работаю. Сервис написан на C ++ (win32), а утилита - на .NET (C #)
Монитор журналов работает для многих других приложений C ++, которые я написал, но не для моего сервиса.
Единственное основное отличие, которое я вижу, состоит в том, что другие приложения используют более старый :: WriteFile () для вывода в журнал, тогда как в сервисе я использую std :: ofstream так:
std::ofstream logFile;
logFile.open("C:\\mylog.log");
logFile << "Hello World!" << std::endl;
logFile.flush();
Из моей утилиты я использую FileSystemWatcher так:
FileSystemWatcher fsw = new FileSystemWatcher(@"C:\", "mylog.log");
fsw.Changed += new FileSystemEventHandler(fsw_Handler);
fsw.EnableRaisingEvents = true;
Но для службы она никогда не получает никаких событий изменения при обновлении журнала. Я обнаружил, что любой пример кода с использованием FileSystemWatcher, с которым я сталкивался в сети, тоже имеет ту же проблему ...
Но я знаю, что события должны быть доступны, потому что другие приложения мониторинга журналов (например, BareTail ) работают нормально с файлом журнала службы.
Я бы предпочел, чтобы код C # для утилиты работал так, чтобы она работала с чем угодно, но если мне придется изменить код регистрации для службы, я это сделаю. Кто-нибудь видит, что здесь происходит не так?