...
MDC | Group | Description | Applicable (per log file) | Marker Associations | Required? Y/N/C (C= context dependent) N = not required | Use Cases | Code References | |||
---|---|---|---|---|---|---|---|---|---|---|
UUID to track the processing of each client request across all the ONAP components involved in its processing | Y | |||||||||
InvocationID | UUID correlates log entries relating to a single invocation of a single component | Y | ||||||||
InstanceUUID | UUID to differentiate between multiple instances of the same (named) log writing service/application | Y | ||||||||
ServiceName | The service inside the partner doing the call - includes API name | Y | ||||||||
PartnerName | The URI that the caller used to make the call to the component that is logging the message. | Y | ||||||||
StatusCode | This field indicates the high level status of the request - one of (COMPLETE, ERROR) | Y | ||||||||
ResponseCode | This field contains application-specific error codes. | Y | ||||||||
ResponseDescription | This field contains a human readable description of the ResponseCode. | Y | ||||||||
Severity | OPS specific Use/Map existing? https://www.slf4j.org/api/org/apache/commons/logging/Log.html ENUM is INFO/TRACE/DEBUG/WARN/ERROR/FATAL By default - align this severity with the reported log level (optionally a way to map actual level from reported level if required) | Y | ||||||||
ServerFQDN | This field contains the Virtual Machine (VM) Fully Qualified Domain Name (FQDN) if the server is virtualized. Otherwise, it contains the host name of the logging component. Best effort (ip, fqdn) (previously covered by removed "Server" field) redundancy between clientIP, server, virtualServer name is OK - and helpfull for runtime OPS/Hybrid envs superceedes virtualServerName Report what is in the http header Discussion: roll all 3 fqdn, hostname or ip into one field - do we ever need two of the 3 fields concurrently? TODO: Verify what is also available from a filebeat agent when it exists | Y | ||||||||
ClientIPAddress | This field contains the requesting remote client application’s IP address if known. Otherwise this field can be empty. We don't differentiate between inside/outside ONAP for the IP - this supports hybrid environments Derived from the system redundancy between clientIP, server, virtualServer name is OK - and helpfull for runtime OPS/Hybrid envs Discussion: do we need both ip and fqdn fields? Report what is in the http header | Y | ||||||||
EntryTimestamp (previously BeginTimestamp) | Date-time that processing activities being logged begins. The value should be represented in UTC and formatted per ISO 8601, such as “2015-06-03T13:21:58+00:00”. The time should be shown with the maximum resolution available to the logging component (e.g., milliseconds, microseconds) by including the appropriate number of decimal digits. For example, when millisecond precision is available, the date-time value would be presented as, as “2015-06-03T13:21:58.340+00:00”. Context dependent on whether part of an ENTRY marker Audit requires this field | C | ||||||||
InvokeTimestamp (prevously EndTimestamp) | Timestamp on invocation start Context dependent on whether part of an INVOKE marker metrics needs invoke | C | ||||||||
TargetEntity | It contains the name of the ONAP component or sub-component, or external entity, at which the operation activities captured in this metrics log record is invoked. Example: SDC-BE | C | ||||||||
TargetServiceName | It contains the name of the API or operation activities invoked (name on the remote/target application) at the TargetEntity. Example: Class name of rest endpoint Discussion: on building call graph vs human readable single line - keep for human readable Used as valuable URI - to annnote invoke marker Review in terms of Marker-INVOKE - possiblly add INVOKE-return - to filter reporting TBD: Coverage by log file type (debug, trace, ...) TBD: cover off discussion on reducing log files to two (DEBUG/rest) for C* release | C | ||||||||
TargetElement | VNF/PNF context dependent - on CRUD operations of VNF/PNFs The IDs that need to be covered with the above Attributes are - VNF_ID OR VNFC_ID : (Unique identifier for a VNF asset that is being instantiated or that would generate an alarms) - VSERVER_ID OR VM_ID (or vmid): (Unique identified for a virtual server or virtual machine on which a Control Loop action is usually taken on, or that is installed as part of instantiation flow) - PNF : (What is the Unique identifier used within ONAP) | C | ProcessKey | This field can be used to capture the flow of a transaction through the system by indicating the components and operations involved in processing. If present, it can be denoted by a comma separated list of components and applications. Discussion: should be redundant because of the invocationID | N 20180614 - will delete by 20180619 |
Logging
Via SLF4J:
Code Block | ||||
---|---|---|---|---|
| ||||
import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; // ... final Logger logger = LoggerFactory.getLogger(this.getClass()); MDC.put("SomeUUID", UUID.randomUUID().toString()); try { logger.info("This message will have a UUID-valued 'SomeUUID' MDC attached."); // ... } finally { MDC.clear(); } |
...