Windows服务运行状况/错误跟踪
本文关键字:错误 跟踪 服务 运行 Windows | 更新日期: 2023-09-27 17:50:40
我们的客户端使用的软件由客户端->网关->引擎组成。引擎和网关作为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