Table of Contents |
---|
About This Document
...
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 | allows forward compatability with ELK indexers that read all MDCs in a single field - while maintaining separate MDCs above. | %mdc | C | 28 | Message | log system | %msg | C | 29 | 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 | |||||||||||||||||||
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(); } |
...
Note there are 3 tabs (see p_mak in logback.xml) delimiting the MARKERS (ENTRY and EXIT) at the end of each line
<property name="p_mak" value="%replace(%replace(%marker){'\t', '\\\\t'}){'\n','\\\\n'}"/>
Code Block | ||||
---|---|---|---|---|
| ||||
2018-07-05T20:21:34.794Z http-nio-8080-exec-2 INFO org.onap.demo.logging.ApplicationService InstanceUUID=ede7dd52-91e8-45ce-9406-fbafd17a7d4c, RequestID=f9d8bb0f-4b4b-4700-9853-d3b79d861c5b, ServiceName=/logging-demo/rest/health/health, InvocationID=8f4c1f1d-5b32-4981-b658-e5992f28e6c8, InvokeTimestamp=2018-07-05T20:21:26.617Z, PartnerName=, ClientIPAddress=0:0:0:0:0:0:0:1, ServerFQDN=localhost ENTRY 2018-07-05T20:22:09.268Z http-nio-8080-exec-2 INFO org.onap.demo.logging.ApplicationService ResponseCode=, InstanceUUID=ede7dd52-91e8-45ce-9406-fbafd17a7d4c, RequestID=f9d8bb0f-4b4b-4700-9853-d3b79d861c5b, ServiceName=/logging-demo/rest/health/health, ResponseDescription=, InvocationID=8f4c1f1d-5b32-4981-b658-e5992f28e6c8, Severity=, InvokeTimestamp=2018-07-05T20:21:26.617Z, PartnerName=, ClientIPAddress=0:0:0:0:0:0:0:1, ServerFQDN=localhost, StatusCode= EXIT |
...