...
Pipe Order | Name | Type | Group | Description | Applicable (per log file) | Marker Associations | Moved MDC to standard attribute | Removed (was in older spec) | Required? Y/N/C (C= context dependent) N = not required L=Library provided | Derived | Acumos ref | Use Cases | Code References | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | LogTimestamp | log system | use %d field - see %d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX",UTC} | L | |||||||||||||||
2 | EntryTimestamp | MDC | if part of an ENTRY marker log | C | |||||||||||||||
3 | InvokeTimestamp | MDC | if part of an INVOKE marker log | C | |||||||||||||||
4 | MDC | UUID to track the processing of each client request across all the ONAP components involved in its processing | Y | In general | |||||||||||||||
5 | InvocationID | MDC | UUID correlates log entries relating to a single invocation of a single component | Y | |||||||||||||||
6 | InstanceUUID | MDC | UUID to differentiate between multiple instances of the same (named) log writing service/application | Y | |||||||||||||||
7 | ServiceInstanceID | MDC | C | ||||||||||||||||
8 | Threadthread | log system | use %thread field | L | |||||||||||||||
9 | ServiceName | The service inside the partner doing the call - includes API name | Y | ||||||||||||||||
10 | PartnerName | unauthenticated = The part of the URI specifying the agent that the caller used to make the call to the component that is logging the message. authenticated = userid | Y | user | |||||||||||||||
11 | StatusCode | This field indicates the high level status of the request - one of (COMPLETE, ERROR, INPROGRESS) | Y | 20180807: expand from 2 fields to add "INPROGRESS" addresses Chris Lott question on https://wiki.acumos.org/display/OAM/Log+Standards | |||||||||||||||
12 | ResponseCode | This field contains application-specific error codes. | Y | ||||||||||||||||
13 | ResponseDesResponseDesc | This field contains a human readable description of the ResponseCode | Y | ||||||||||||||||
14 | Levellevel | %level | CL | ||||||||||||||||
15 | Severity | Logging level by default aligned with the reported log level - one of INFO/TRACE/DEBUG/WARN/ERROR/FATAL | Y | level (but numbers) | |||||||||||||||
16 | ServerIPAddress | C | |||||||||||||||||
17 | ElapsedTime | C | |||||||||||||||||
18 | ServerFQDN | The VM FQDN if the server is virtualized. Otherwise the host name of the logging component. | Y | ||||||||||||||||
19 | ClientIPAddress | This field contains the requesting remote client application’s IP address if known. Otherwise empty. | Y | ||||||||||||||||
20 | VirtualServerName | C | |||||||||||||||||
21 | ContextName | C | |||||||||||||||||
22 | TargetEntity | 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. | C | ||||||||||||||||
23 | TargetServiceName | The name of the API or operation activities invoked (name on the remote/target application) at the TargetEntity. | C | ||||||||||||||||
24 | 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 | ||||||||||||||||
25 | User | MDC | User - used for %X{user} | C | |||||||||||||||
26 | Loggerp_logger | log system | The name of the class doing the logging (in my case the ApplicationController – close to the targetservicename but at the class granular level - this field is %logger | CL | |||||||||||||||
27 | Mdcp_mdc | log system | %mdc | C | allows forward compatability with ELK indexers that read all MDCs in a single field - while maintaining separate MDCs above. The key/value pairs all in one pipe field (will have some duplications currently with MDC’s that are in their own pipe – but allows us to expand the MDC list – replaces customvalue1-3 older fields - this field is %mdc | L | |||||||||||||
28 | p_message | log system | The marker labels INVOKE, ENTRY, EXIT – and later will also include DEBUG, AUDIT, METRICS, ERROR when we go to 1 log file - this field is %marker | L | |||||||||||||||
28 | Message | log system | %msg | C | 29 | C | |||||||||||||
29 | Markerp_marker | log system | %marker | CThe marker labels INVOKE, ENTRY, EXIT – and later will also include DEBUG, AUDIT, METRICS, ERROR when we go to 1 log file - this field is %marker | L |
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(); } |
...