Log Format

Ontoserver is configured to produce log messages that can be used to monitor the usage of the server's FHIR API. These log messages are formatted as JSON objects, to facilitate parsing and analysis by programs such as elasticsearch.

The log messages produced are:

  • Provider logs
  • HTTP response logs

So, for example, a request such as a GET-style $expand request will generate one log message of each type. By contrast, a batch request containing two $lookup requests will generate three provider logs (one for the batch and two for the $lookup requests), and one HTTP response log (for the batch response).

The content of the JSON log message objects is described below.

HTTP response logs

HTTP response logs contain the following fields.

Field Content
uuid A unique identifier for the request
user The user_name field from the authorization token (if it exists and ontoserver.logging.logUser is true)
clientId The clientId field from the authorization token (if it exists)
ontoserverFhirBase The base URL of the FHIR server (if one has been configured)
requestProtocol http or https
requestVerb The HTTP request verb (e.g. GET, POST, PUT, DELETE, PATCH) of the request
servletPath The path part of the request URL (excluding URL parameters)
operationType The kind of FHIR request (e.g. create, search-type, extended-operation-instance)
operationName If the request is an operation, the name of the operation (e.g. expand, lookup)
id If the request is an instance-level request, the id of the resource
resourceName If the request is a type-level or instance-level request, the name of the resource type
requestHeader.accept The Accept HTTP request headers
requestHeader.content_type The Content-Type HTTP request headers
requestHeader.if_none_match The If-None-Match HTTP request headers
requestHeader.origin The Origin HTTP request headers
requestHeader.prefer The Prefer HTTP request headers
requestHeader.referer The Referer HTTP request headers
requestHeader.user_agent The User-Agent HTTP request headers
requestHeader.x_forwarded_for The X-Forwarded-For HTTP request headers
requestHeader.x_forwarded_for The X-Intermediary HTTP request headers
requestHeader.x_forwarded_host The X-Forwarded-Host HTTP request headers
remoteAddr The originating IP address of the request
requestParameters The URL parameters part of the request URL
responseEncodingNoDefault The mime type (e.g. application/fhir+json, application/fhir+xml) after resolution of defaults
requestUrl The requested URL (excluding URL parameters)
time_ms The time (in ms) taken by the server to process the request
responseStatus The HTTP response status (e.g. 200, 304, 422)
exceptionMessage If the request generated an exception, the message describing the exception

Provider logs

The following fields are common to all provider logs.

Field Description
start_ms The time the provider received the request
uuid The uuid of the corresponding HTTP request/response logs
providerMethod The provider method (e.g. search, create, $lookup)
end_ms The time the provider finished processing the request

Batch

Batch requests have the providerMethod $transaction, and have the following additional fields.

Field Description
type The type of batch request (e.g. batch, transaction)
entries The number of entries in the batch

Closure

Closure requests have the providerMethod $closure, and have the following additional fields.

Field Description
name The name of the closure
version The version of the closure
codings The number of (new) codings in the closure request

Create

Create requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod create.

Delete

Delete requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod delete, and have the following additional fields.

Field Description
id The id of the resource being deleted

Expand

Expand requests have the providerMethod $expand (for type-level requests) or $expand-instance (for type-level requests), and have the following additional fields.

Field Description
id The id of the ValueSet (for instance-level only)
url The url parameter (for type-level only)
identifier The (legacy) identifier parameter (for type-level only)
filter The filter parameter
profile The profile parameter
offset The offset parameter
count The count parameter
size the number of concepts returned in the expansion
total the total number of concepts in the expansion

Lookup

Lookup requests have the providerMethod $lookup, and have the following additional fields.

Field Description
system The system parameter
code The code parameter

Metadata

Metadata (CapabilityStatement) requests have the providerMethod metadata.

Read

Read requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod read, and have the following additional fields.

Field Description
id The id of the resource

Search

Search requests (for CodeSystem, ConceptMap, ValueSet, Bundle, StructureDefinition or NamingSystem), including requests with no search parameters (“get all”) have the providerMethod search, and may have the following additional fields, depending on which resource type is being queried.

Field Description
description The description search parameter
identifier The identifier search parameter
name The name search parameter
system The system search parameter
url The url search parameter
version The version search parameter
publisher The publisher search parameter
status The status search parameter
title The title search parameter
kind The kind search parameter
value The value search parameter
type The type search parameter
reference The reference search parameter
idParam The id search parameter
_lastUpdated the _lastUpdated search parameter
_security The _security search parameter
_tag The _tag search parameter
x-syndication-status The x-syndication-status search parameter
results The number of search results

Subsumes

Subsumes requests have the providerMethod $subsumes (for type-level requests) or $subsumes-instance (for type-level requests), and have the following additional fields.

Field Description
codeA The codeA parameter
codeB The codeB parameter
version The version parameter
codingA The codingA parameter
codingB The codingB parameter
outcome The outcome of the request (e.g. subsumes, subsumed-by)

Translate

Translate requests have the providerMethod $translate (for type-level requests) or $translate-instance (for type-level requests), and have the following additional fields.

Field Description
id The id of the ConceptMap (for instance-level only)
code The code parameter
system The system parameter
source The source parameter
valueSet The valueSet parameter
target The target parameter
reverse The reverse parameter
result the resulting translated code

Update

Update requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod update, and have the following additional fields.

Field Description
id The id of the resource being updated

Validate

Validate requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod $validate (for type-level requests) or $validate-instance (for type-level requests), and have the following additional fields.

Field Description
id The id of the resource being validated

Validate-code

Validate-code requests have the providerMethod $validate-code (for type-level requests) or $validate-code-instance (for type-level requests), and have the following additional fields.

Field Description
id The id of the ValueSet (for instance-level only)
url The url parameter (for type-level only)
code The code parameter
system The system parameter
version The version parameter
display The display parameter
result The result of the operation (true or false)

VRead

Versioned read requests (for CodeSystem, ConceptMap or ValueSet) have the providerMethod vread, and have the following additional fields.

Field Description
id The id of the resource
version The version of the resource