Skip to content
Art2link ESB v2.02 LTS HomeDocumentationBlogContact
Monitor & operate/Logs
Preview · this stream is evolving

Logs

Three correlated log streams in one place — infrastructure, application, and audit — with retention, immutability, and export paths sized for SOC 2 and HIPAA. Where Tracking follows a single message and Monitoring shows current state, Logs is the evidence-grade historical record of everything else that happened.

Every customer eventually has to answer two questions that Tracking and Monitoring cannot: "who changed this, and when?" and "prove it for the auditor." Logs is the answer to both. It records the events the platform and its operators generate, keeps them long enough to satisfy compliance regimes the customer is most likely to be assessed against, and exposes them in shapes that a SIEM, an auditor, or a legal hold can consume.

Three streams live side by side on the Logs screen. Infrastructure logs capture what Azure itself emits about the resources Art2link runs on. Application logs capture what Art2link emits about its own runtime. Audit logs capture every operator action against the platform. They share one filter bar, one time picker, one export workflow — but each is stored, retained, and protected to a different standard, because each answers a different kind of question.

Each stream has its own source, its own retention default, and its own immutability guarantee. The Logs screen presents them on one canvas so a single time range and a single filter expression can be applied across all three at once — useful when a single incident touches an Azure resource, an application path, and an operator action in the same minute.

SOURCES INFRASTRUCTURE SQL audit, Key Vault, Storage, App Service… APPLICATION Runtime events from ports, pipelines, maps AUDIT Every operator action against the platform UNIFIED LOG STORE Append-only hash-chained, time-synced RBAC-scoped reads Retention windows / stream Export — CSV / JSONL / SIEM Auditor / legal-hold bundle COMPLIANCE POSTURE SOC 2 HIPAA extensible to others on request

The three streams differ on every dimension that matters to an auditor.

StreamWhat it recordsDefault retentionCompliance lift
InfrastructureAzure resource diagnostic and activity events — SQL audit, Key Vault access, Storage diagnostics, App Service stdout/stderr, Service Bus operations, NSG events, Azure RBAC role assignments.90 days hot, 1 year archiveSOC 2 logical-access & change-management evidence at the platform layer.
ApplicationArt2link’s own structured emissions — port lifecycle, pipeline traces, adapter connects, map evaluations, runtime errors, deployment events. Correlated to Tracking IDs.90 days hot, 1 year archiveSOC 2 system-operations evidence; supports HIPAA §164.312(b) audit-controls implementation.
AuditEvery operator action — sign-in, port create / change / delete, credential rotation, snapshot restore, retention-policy change, role assignment, log export.1 year hot, 6 years archiveSOC 2 change-management & CC6/CC7 series; HIPAA §164.308(a)(1)(ii)(D) & §164.312(b) audit controls.

Everything Azure itself records about the resources Art2link runs on. The platform turns on the diagnostic-setting and audit feeds that compliance frameworks expect and routes them all into one queryable workspace so an investigator does not have to walk the Azure portal resource by resource.

SourceWhat it capturesWhy it matters
Azure SQL audit (Art2linkDB, TrackingDB)Every login, every schema change, every query execution that touches an audited table.SOC 2 logical access at the database layer; HIPAA evidence that PHI-bearing tables are not read off-policy.
Key Vault diagnosticsSecret get / set / delete, key wrap / unwrap, certificate operations — with caller identity.Proves credential rotations actually happened, and that nothing outside the platform pulled a secret.
Storage account diagnosticsBlob and file read / write / delete operations with caller identity and source IP.Required when message payloads or audit exports are persisted to blob.
App Service logsProcess stdout / stderr, deployment events, container restarts, autoscale actions.The first place to look when a runtime error is shaped like a platform issue, not an integration issue.
Service Bus operational logsNamespace operations, throttling events, dead-letter actions.Correlates throttling visible in Monitoring back to the responsible client or namespace operation.
Azure Activity logSubscription-level changes — resource creates / deletes, role assignments, policy edits.The change-management spine. Any “who scaled this tier?” question lands here.
Sign-in & Entra ID logs (where applicable)Tenant sign-ins, conditional-access decisions, MFA challenges.Authentication evidence below the Art2link layer.
!
Infrastructure logs are sourced, not generated. The platform consumes what Azure already emits — it does not invent a parallel record. That keeps the stream defensible: an auditor can reconcile what Logs shows against the same events in the Azure portal and they will match.

What Art2link’s own software writes as it runs. These are structured JSON events with a fixed envelope so a single KQL query can filter across the whole platform without parsing free-form strings. Where Tracking answers what happened to this message, application logs answer what was the runtime doing at the time.

Event classExamples
Port lifecyclePort started, stopped, paused, restarted; adapter connection opened, closed, failed; listener bound to endpoint.
Pipeline traceEach pipeline component’s entry, exit, and outcome — without payload, distinct from the body-bearing Tracking record.
Map evaluationMap invoked, custom function called, validation failure, transformation error.
Runtime errorUnhandled exceptions with stack, correlation ID, originating port, and the Tracking step ID they belong to.
Deployment eventNuGet package published, snapshot generated, snapshot restored, configuration applied.
Background jobtrackingdb-prune, index-maintenance, snapshot-generate, secret-expiry-scan, backup-verify — entry, exit, duration, outcome.

Every record carries the same envelope:

FieldPurpose
timestampUTC, sourced from the host’s NTP-synced clock.
tenantAlways present, even on single-tenant deployments — keeps the schema portable.
application / portThe configured objects the event came from, where applicable.
tracking_idCorrelates the line into a Tracking run when one exists.
leveldebug / info / warn / error / fatal.
eventA stable, machine-readable event name (e.g. port.lifecycle.started).
actorAlways system for application logs — operator-attributed events live in the audit stream.

The compliance-grade record of every operator action against the platform. Lightweight by design — no payloads, no message bodies — but exhaustive in coverage: if a human or a service principal changed something, it shows up here.

CategoryTracked actions
IdentitySign-in, sign-out, failed sign-in, MFA challenge result, session expiry, impersonation start / end.
ConfigurationApplication, port, pipeline, map, schema, variable, constant, custom function, pipeline component — create, update, delete; before / after diff on update.
CredentialsAdapter credential rotated, Key Vault secret reference changed, API key issued / revoked, certificate uploaded.
Runtime controlPort started / stopped, suspended run resumed / terminated, deployment promoted between environments.
AdministrationUser added / removed, role granted / revoked, RBAC policy edited, tenant setting changed.
Snapshots & retentionSnapshot generated, snapshot restored, retention window changed, log export downloaded.
Self-auditAudit-log read, audit-log export, retention-policy change on the audit stream itself — the audit stream watches itself.

Every record carries the actor envelope:

FieldPurpose
timestampUTC, NTP-synced; the audit stream additionally records source-clock skew when it exceeds 250 ms.
actor.typeuser, service_principal, or system.
actor.id / actor.emailThe identity that performed the action.
source_ip / user_agentWhere the action originated.
actionStable verb (e.g. port.update, credential.rotate).
targetThe object the action ran against, fully qualified.
before / afterJSON diff for configuration changes; null for actions without a stateful before/after.
hash_prev / hash_selfHash-chain links that make the stream tamper-evident — see Retention & immutability.
outcomesuccess / denied / error; denied actions are recorded with the same weight as successful ones.
!
Denied actions are first-class records. An attacker probing a port they cannot edit looks identical to a benign mis-click until you read the audit log. Both attempts are written; the operator role only sees the ones attributable to them, the auditor role sees everything.

The three streams together are the platform’s answer to the two compliance regimes the customers are most often assessed against. The point is not that Art2link makes a customer SOC 2 or HIPAA compliant by itself — that remains a programme-level conclusion — but that the platform never becomes the reason the assessment stalls.

RequirementHow Logs satisfies it
SOC 2 CC6 — Logical & physical accessSign-ins, role grants, denied access attempts all land in the audit stream. Infrastructure sign-in logs corroborate from the Azure layer.
SOC 2 CC7 — System operationsDeployment events, maintenance-job outcomes, and runtime errors are persisted in application logs; corresponding Azure resource events in infrastructure logs.
SOC 2 CC8 — Change managementEvery configuration change — port, map, schema, pipeline — carries a before / after diff, an actor identity, and a timestamp in the audit stream.
HIPAA §164.308(a)(1)(ii)(D) — Information system activity reviewAudit-log retention defaults to 6 years, the HIPAA documentation retention period. Application logs cover the activity-review surface.
HIPAA §164.312(b) — Audit controlsHash-chained, append-only audit stream with RBAC-scoped reads and immutable archive storage satisfies the “hardware, software, and procedural mechanisms” clause.
HIPAA §164.312(c)(1) — IntegrityThe hash chain detects retroactive modification; the immutable archive prevents it.
HIPAA §164.312(d) — Person or entity authenticationEvery audit record carries an actor identity. Anonymous writes are not possible.
BAA — Business Associate AgreementLogs are stored within the customer’s Azure tenant on Azure services covered by Microsoft’s BAA; no third-party log SaaS is in the path by default.
!
The compliance posture is the defaults, not the ceiling. Retention windows, immutability windows, and the set of routed event sources can all be tightened above the defaults for customers in stricter regulatory regimes (PCI‑DSS, HITRUST, FedRAMP-aligned). Loosening below the defaults requires an explicit configuration change that is itself audited.

Each stream moves through three storage tiers as it ages. Hot tier is queryable from the Logs screen with sub-second latency. Warm archive keeps the same query interface but at a higher latency and a lower per-GB cost. Cold archive is offline blob storage with an immutability policy — bring-back-on-demand for an auditor or a legal hold.

StreamHotWarm archiveCold / legal hold
Infrastructure90 days1 yearconfigurable
Application90 days1 yearconfigurable
Audit1 year6 yearsimmutable, configurable beyond 6y

Immutability is enforced at the storage layer, not the application layer. The platform writes; nothing in the platform can rewrite or delete an archived record before its retention expires — not an operator, not a tenant admin, not the platform itself. Three mechanisms make that guarantee load-bearing:

MechanismWhat it does
Append-only writesThe platform has no update / delete path on a log record. The schema does not even model one.
Hash-chained audit streamEach audit record references the hash of the previous record. Any retroactive edit breaks every subsequent link — detectable by recomputing the chain.
Immutable archive policyThe cold-tier blob containers carry a time-based immutability policy. Records cannot be deleted until the policy clock expires, regardless of credentials.
Authoritative timeAll three streams use the host’s NTP-synced clock. Skew > 250 ms is itself an audit event — the timeline cannot be quietly bent.

Reading and exporting logs is itself audited. Every export records what was extracted, by whom, for what time range, and to which destination — an export of the audit stream produces an audit record about the export.

RoleDefault access
OperatorRead infrastructure and application logs. Read own audit actions. No export.
Tenant adminRead all three streams. Export with throttled volume. Cannot change retention or immutability windows.
AuditorRead-only across all three streams including the warm archive. Full export.
Compliance adminAll of the above, plus the ability to change retention and immutability windows. Every such change is an audit event.

Three export shapes ship by default. A fourth, custom-formatted export for a specific SIEM is a configuration, not a code change.

FormatUse
CSVSpreadsheet-shaped, suitable for ad-hoc auditor review.
JSONLOne JSON record per line. The native shape; round-trips into any SIEM that accepts JSON.
Syslog (RFC 5424)Streamed forwarder for SIEMs that prefer a tail rather than a batch.
Legal-hold bundleA signed, hash-manifested archive of a specified time range across all three streams — the shape an outside counsel or regulator typically asks for.
Logs is in active development. The framing on this page is the target shape of the screen and the storage model it ships against in the first complete release. Infrastructure and application streams are available in both Starter and Enterprise; the audit stream, hash-chained storage, immutable archive, and legal-hold bundle export are Enterprise.

That’s Logs

Three correlated streams — infrastructure, application, audit — with retention, immutability, and export sized for SOC 2 and HIPAA. Tracking shows what happened to a message; Monitoring shows whether the plant is healthy; Logs is the evidence record everything else stands on.