Windows服务运行状况/错误跟踪

本文关键字:错误 跟踪 服务 运行 Windows | 更新日期: 2023-09-27 17:50:40

我们的客户端使用的软件由客户端->网关->引擎组成。引擎和网关作为windows服务实现,有时在同一台机器上,有时不是。我们想要的是某种类型的监视器,它可以测试服务是否正在运行,响应时间是什么,错误跟踪等。因此,每当服务出现问题时,我们都会有所有可用的数据,包括发生的时间、原因和情况……不能再有远程访问,事件日志。有没有什么现有的解决方案可以纳入到我们的软件中?

微软运营经理呢?它能用在我们的案子上吗?我开始研究,但没有发现任何有用的信息。

感谢您提供的任何信息!

Windows服务运行状况/错误跟踪

有一个windows api可以帮助监视windows服务的运行状态。

std::wstring width = std::wstring(str.begin(), str.end());Const wchar_t* widecstr = widecstr .c_str();

SC_HANDLE scm = ::OpenSCManager(0, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE);
SC_HANDLE service = ::OpenService(scm, L"Audiosrv", SERVICE_QUERY_STATUS);
if(service == NULL)
{
    std::cout << "NO target service.Fail to monitor Windows Service!" << std::endl;
}
else
{
    std::cout << "Start to monitor Windows Service!" << std::endl;
}
SERVICE_NOTIFY serviceNotify = { SERVICE_NOTIFY_STATUS_CHANGE,onServiceNotifyCallback};
while(1)
{
    const DWORD result1 = ::NotifyServiceStatusChange(service,
                                                SERVICE_NOTIFY_RUNNING,
                                                &serviceNotify);
    ::SleepEx(INFINITE, TRUE); // Wait for the notification
    const DWORD result2 = ::NotifyServiceStatusChange(service,
                                        SERVICE_NOTIFY_STOPPED,
                                        &serviceNotify);
    ::SleepEx(INFINITE, TRUE); // Wait for the notification
}
::CloseServiceHandle(service);
::CloseServiceHandle(scm);

}

下面是整个示例项目:https://github.com/gogocanfly/MonitorWindowsService