On XProtect Corporate 2022 R3, is there a supported API or interface for an external system to read System log entries — specifically camera Communication Started / Communication Stopped events — without querying the Log Server SQL
database directly?
Yes. The MIP SDK includes a VideoOS.Platform.Log.LogClient Class
You can explore the Log Read sample to see it in use.
Thanks Bo, that’s very helpful — I hadn’t found LogClient.
A few follow-up questions on the API itself, for an external
application that needs camera Communication Started / Stopped on
2022 R3:
-
Runtime. The MilestoneSystems.VideoOS.Platform.SDK package targets
.NET Framework 4.7.2. Is LogClient usable from .NET 6+ or from a
non-Windows host, or does a LogClient integration require Windows? -
Resuming without gaps or duplicates. ReadLog takes beginTime/endTime
and returns pages of up to 1000 entries, and the entries do not
appear to expose a unique or monotonic identifier. For a service
that has to resume after a restart, what is the intended pattern?
Is there an identifier I have missed?Related: in testing I see roughly a 30-second delay between an
entry’s timestamp and it becoming readable. Is that expected, and
is there a recommended margin to subtract from the query window so
late-arriving entries are not skipped? -
Permissions. Which role permission does a service account need to
read the System log group through LogClient? -
Status API. SystemStatusClient / StatusSession looks like the
push-based option on this version, but the sample connects to the
Management Server and then to each recording server. Is there a
supported way to receive camera Communication Started / Stopped
from a single endpoint? And is the Status Service (SOAP) still
supported on 2022 R3, or is it considered legacy? -
Confirmation, so I don’t state it incorrectly: does
VideoOS.Platform.EventsAndState / EventsAndStateSession require
2023 R3 or later with the API Gateway?
More generally — on 2022 R3, what is the recommended way for an
external application to receive camera communication state?
- MIP Message communication. Can an external application register a
filter via MessageCommunication and receive device Communication
Started / Stopped from the Event Server on 2022 R3? The
documentation describes the transport and the Event Server
forwarding, but does not say whether live VMS device state flows
through it. @Bo_Ellegard_Andersen api milestone-api xprotect #2022-r3
-
Yes. This requires the .NET Framework.
-
Logging is a low-priority process, so there may be a delay before entries are written. If you need real-time monitoring, consider using one of the other available methods instead. The current design reflects its intended use in the Management Client’s Server Logs section.
-
In a Role, go to the Overall Security tab. Access to server logs is controlled by the Server Logs permission group.
-
The Status Service runs on each Recording Server. If your system has multiple Recording Servers, each one exposes its own Status Service SOAP endpoint. Event Server uses this service as an underlying mechanism, and it remains fully supported.
-
Yes, that is correct.
-
You can use Milestone Integration Platform (MIP) message communication. The Status Viewer sample provides an example implementation that uses the Responding and Not Responding messages.
Thank you for the prompt replies.
One constraint I should have mentioned earlier: our application runs on RHEL 9, so we have no .NET Framework host available. Given that:
-
Is there a supported way to use MIP message communication from a Linux environment on XProtect 2022 R3? Or does this route necessarily require a Windows process that receives the messages and forwards them to our application?
-
Our installation has several servers connected to one Management Server. If our client connects to the Management Server, does that give it access to the MIP environment for the whole system — or does message communication require a
separate, direct connection to the Event Server? -
What we are ultimately trying to achieve: receiving camera Responding / Not Responding from a single point, rather than connecting to each server individually. Is that possible on this version, and if so, which server should the
client connect to, and on which port?
Thank you @Bo_Ellegard_Andersen mip-api MIP #2022-r3 xprotect management-cient
I need to correct my previous response, as it may have been misleading.
The newer MIP Message communication mechanism, including the Linux-supported implementation, is designed for communication between applications or processes that you develop yourself. It cannot be used to subscribe to internal XProtect events in the same way as the legacy MIP Message Communication functionality provided by the MIP SDK.
Because XProtect Corporate 2022 R3 does not include the RESTful Events API or the Events and State WebSocket API, the supported approach is to use the Status Service SOAP API.
The workflow is:
- Authenticate with the Management Server and obtain a token.
- Retrieve the Recording Server addresses from the Management Server.
- Connect to the Status Service on each Recording Server.
- Monitor camera and device status changes through the Status Service.