- 2 minutes to read

Log Event

Nodinite enables End-to-End Logging either from the use of any of the "out of the box ready to go" Log Agents or from your own solutions based on your own code. This enables you and Nodinite to use synchronous and asynchronous message exchange logging patterns.

graph LR subgraph "Log Monitoring Agent Configuration" roMessageBroker[fal:fa-archive Nodinite Log Agents
BizTalk, Mule, Logic Apps, ...] roLogSink("fal:fa-bolt Custom Logging Solution") --> roId1["fal:fa-list Queue
fal:fa-folder Folder
..."] end subgraph "Web Server" roLogAPI(fal:fa-cloud-download Log API) roPS(fal:fa-truck-pickup Pickup Service)--> roLogAPI roId1 -.Log Event.-x roPS roLogSink --> |Log Event|roLogAPI roMessageBroker --> |Log Event| roLogAPI end

Architectural examples with synchronous and asynchronous logging.

You should always go for the asynchronous logging pattern.

What is a Log Event?

A Nodinite Log Event on the wire is an object represented as a JSON object and can be shipped either directly using the REST-based Log API or you can send the very same JSON object to persistent storage for Nodinite Pickup Service to fetch asynchronously. The latter means that:

  • Your logging solutions have no dependency on the Log API (reboot/update whenever you like)
    • You don't have to implement retries
  • You don't have to be lucky... Running async is good for concurrency and the Pickup Service has a limited number of threads and will not overload the Log API
  • ... this list can grow very large

Log Event (Mandatory) - Generic information about the event (like time, message type name and endpoint) - WHEN, HOW

  • Payload (Optional) - The business transaction with data, usually XML, JSON, Flat files like EDI/X12 or zip file, this is defined by a Message Types

    WHAT

  • Context Properties (Optional) - Key-Value based collection of arbitrary data - (for example InvoiceId and CorrelationId) - WHAT
    • With the Context Options you can control the behaviour of how Nodinite processes events.
graph TD subgraph "Event" subgraph "Details" roED[fal:fa-bolt Event Details
LogDateTime = 2018-05-03 13:37:00+02:00
EndPoint = https://api.nodinite.com/...
MessageType=Invoice
...] end subgraph "Payload" ro[fal:fa-envelope Message
base64EncodedMessage] end subgraph "Context Properties" roKey[fal:fa-key Key Values
InvoiceNo = 123
CorrelationId=456
...] end end

The architectural layout of a Log Event

Models

The Log API includes details from the following Model entities:

How do I send Log Events using REST?

Follow the 'Log using REST' article to learn more.

Repository

Log Events can "auto-populate" the Repository Model with special content. Doing so drastically reduces the amount of administration and know-how is "automatically" transferred from developers to the business/IT Operations/AM-teams.

Important

You must enable the 'AllowRepositoryAutomapping' System Parameter for the Logging Service to honour the provided Repository Model related data.


Next Step

Log API
JSON Log Event
Context Options

Repository Model
Log Views
Log Agents
Endpoint Types
Endpoint Directions