Каждая нода должна иметь xml конфигурацию и соотвествующую ей схему валидации xsd Пример:
Корневым тэгом должен быть всегда тэг <config>, который, в свою очередь, должен содержать обязательный тэг <node>, полное описание которого можно найти в node.xsd:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="common.xsd"/>
<xs:simpleType name="log_level_type">
<xs:restriction base="xs:string">
<xs:pattern value="trace|debug|info|notice|warning|error"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="node_status_type">
<xs:restriction base="xs:string">
<xs:pattern value="online|offline|DEAD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="alarm_type">
<xs:restriction base="xs:string">
<xs:pattern value="(all|none|(error|warning|notice)(\s*,\s*(error|warning|notice))*)"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="node_name_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="32" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="group_name_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="32" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="config_name_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="32" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="logger_name_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="32" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="posix_queue_link_type">
<xs:attribute name="msgsize_max" type="non_zero_integer_type" default="2048" use="optional" />
<xs:attribute name="max_msg" type="non_zero_integer_type" default="10000" use="optional"/>
</xs:complexType>
<xs:complexType name="shm_link_type">
<xs:attribute name="size" type="non_zero_integer_type" default="10485760" use="optional" />
</xs:complexType>
<xs:complexType name="node_type">
<xs:sequence>
<xs:element name="link" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="posix_queue" type="posix_queue_link_type"/>
<xs:element name="shm_queue" type="shm_link_type"/>
</xs:choice>
<xs:element name="preopen" minOccurs="0" maxOccurs="1" >
<xs:complexType>
<xs:sequence>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded" >
<xs:complexType>
<xs:attribute name="id" type="non_zero_integer_type" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="flush" type="xs:boolean" default="false" use="optional"/>
<xs:attribute name="read_count" type="xs:integer" default="-1" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="loggers" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="logger" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="logger_name_type" use="required"/>
<xs:attribute name="log_level" type="log_level_type" use="optional"/>
<xs:attribute name="alarm" type="alarm_type" default="error,notice" use="optional"/>
<xs:attribute name="display_name" type="logger_name_type" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dll_map" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="fn" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="non_empty_string_type" use="required"/>
<xs:attribute name="map_to" type="non_empty_string_type" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="wait_timeout_ms" type="xs:integer" default="-1" use="optional" />
<xs:attribute name="log_level" type="log_level_type" default="info" use="optional" />
<xs:attribute name="log_rotate" type="xs:boolean" default="true" use="optional" />
<xs:attribute name="log_buffer_size" type="non_zero_integer_type" default="1048576" use="optional" />
<xs:attribute name="log_thread_cpus" type="xs:string" default="" use="optional" />
<xs:attribute name="log_thread_timeout_ms" type="xs:integer" default="10" use="optional" />
<xs:attribute name="redirect_io" type="xs:boolean" default="false" use="optional" />
<xs:attribute name="alarm" type="alarm_type" default="error,notice" use="optional" />
<xs:attribute name="dll" type="non_empty_string_type" default="${XROAD_ROOT_DIR}/lib/libdll.so" use="optional" />
</xs:complexType>
</xs:schema>
Помимо всего, в <node> можно конфигурировать логгеры создаваемые при помощи xroad_logger_get метода: