A security logging checklist for application teams
Capture access decisions and administrative actions with safe attribution, protected records, and clear outcomes.
Build useful security events around access checks, administrative actions, and sensitive changes—not just generic errors.
{
"schema_version": "1.0",
"timestamp": "2026-09-21T09:41:02.184Z",
"severity": "WARN",
"event_id": "evt_demo_005",
"event_name": "access.denied",
"service": "identity-service",
"attributes": {
"actor_ref": "actor_demo_07",
"action": "settings.write",
"decision": "deny",
"outcome": "not_executed"
}
}Distinguish requested, authorized, attempted, and completed.
Separate event writing from broad reading or deletion privileges.
Treat an alert as a reason to review evidence, not proof of compromise.
Identify which business operations matter to investigators and define their event semantics with the application owner. A record emitted before a database commit should not claim that the change completed. Use a stable operation reference to connect related stages.
These fields illustrate a design pattern. Map them deliberately to your own schema, source, and destination.
| Field | What it means |
|---|---|
actor_ref | An approved identity reference, never a credential. |
action | The operation requested or attempted. |
decision | The result of the relevant policy evaluation. |
outcome | Whether the authorized action actually completed. |
Security-sensitive logging needs access controls, retention decisions, and failure testing. A log file is not automatically tamper-proof or a compliance certification.
Technical reference: OWASP Logging Cheat Sheet . Verify the version and settings used by your own implementation.
Capture access decisions and administrative actions with safe attribution, protected records, and clear outcomes.
Minimize fields, apply deliberate transformations, and test redaction through storage, viewers, and exports.
Preserve rule decisions, review false positives, and connect edge events to application evidence.
Start with a clear schema. Keep the context that matters.