One of the most critical requirements for distributed systems is the need to support common logging of events, information, and errors as well as support a multitude of programming environments (e.g., Java, C/C++, C#, JavaScript, Windows, UNIX, Linux).
The protocol used for logging needs to be a redundant parallel system that reduces the dependency on the same infrastructure as the nodes and the node network to communicate. For example, if the node and node network use the same messaging software as the logging system, when a problem occurs, critical logging may also be down, losing invaluable information about why the system went down.