AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Awesome Logging Standards

skill-khasky-awesome-agent-skills-awesome-logging-standards · by khasky

Applies structured logging, levels, PII handling, and wide-event (canonical log line) patterns. Use when adding or reviewing logs, choosing log levels, designing request logging, after an incident where logs were insufficient or leaked data, or when the user says 'logging', 'log format', 'what should we log', 'логирование'. Do not use for designing the error contract or retry policy itself — use…

No reviews yet
0 installs
19 views
0.0% view→install

Install

$ agentstack add skill-khasky-awesome-agent-skills-awesome-logging-standards

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-khasky-awesome-agent-skills-awesome-logging-standards)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
23d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Awesome Logging Standards? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Logging Standards

Apply consistent logging so operations are debuggable and compliant without leaking secrets or PII.

When to Activate

  • Adding or refactoring log statements
  • User asks for "logging", "log format", or "what to log"
  • Defining or reviewing logging standards for the project
  • After an incident where logs were insufficient or leaked data

Core Principles

  • Define "working" before instrumenting — Write the 2–4 questions on-call will actually ask ("did checkout succeed for this user?", "which dependency is slow?") and make every signal map to one of them. A log line that answers no operational question is noise.
  • Structured — Prefer key-value fields (e.g. JSON) over long prose so logs are queryable and parseable. Use the same structure across the app (timestamp, level, message, fields).
  • Cardinality — Never use unbounded values as index/label keys (user_id, email, full URL, raw error text) in metrics/labels — they explode cardinality; keep them as event fields instead. Alert on symptoms (user-visible failure), not causes (one host's CPU).
  • Verify the telemetry itself — After instrumenting, induce the failure and confirm you can locate it from the logs/metrics alone. Untested observability tends to be silently wrong — e.g. sampling upstream of metric generation skews a request-rate metric by the sampling ratio while nothing looks broken.
  • Levels — Use consistently: ERROR (failures, exceptions), WARN (recoverable issues, deprecations), INFO (key business events, request summary), DEBUG (detailed flow; disable or sample in production).
  • Context — Include requestid, traceid, or correlationid when available. Include userid, order_id, or similar only when safe and allowed by policy. Do not log full PII (email, phone, address) in plain text unless required and compliant.
  • No secrets — Never log passwords, tokens, API keys, or full card numbers. Redact or omit. For debugging, mask or show last 4 digits only where policy allows.
  • One place — Use the project's logging library (Winston, Pino, log4j, structlog, etc.) and output to the same pipeline (e.g. stdout) that the platform collects.

Work Process

  1. Check existing practice — What format does the project use (JSON, plain text)? What library? What levels? Match it.
  2. Choose level — error for failures; warn for recoverable or deprecated; info for key actions (request completed, order created); debug for detailed flow. Do not use info for verbose per-item logs in hot paths; use debug or sampled info.
  3. Add context — Request id, operation name, duration, status. Identifiers (userid, orderid) only if policy allows. Structured fields, not interpolated into message string when the logger supports structured fields.
  4. Redact — No secrets; no full PII in message or fields. If you must log something sensitive for debugging, use redaction or sampling and document.
  5. Verify — Logs go to stdout or the configured sink; format is parseable; no secrets or PII in sample output.

What to Log

| Category | Level | Content | Do not log | |----------|--------|---------|------------| | Request start/end | INFO | method, path, status, durationms, requestid | Body, headers with tokens | | Errors | ERROR | message, error type, stack (server-side), requestid | Full request/response, secrets | | Recoverable issues | WARN | message, context (e.g. retry count), requestid | | | Key business events | INFO | event name, relevant ids (orderid, userid if safe), outcome | Full payloads, PII | | External calls | INFO or DEBUG | service, operation, duration_ms, outcome (success/failure) | Full request/response, credentials | | Detailed flow | DEBUG | step, state, ids | Secrets, PII |

Format (structured)

JSON (recommended for production):

{
  "timestamp": "2024-03-15T10:30:00.123Z",
  "level": "info",
  "message": "Request completed",
  "request_id": "abc-123",
  "method": "GET",
  "path": "/api/orders",
  "status": 200,
  "duration_ms": 45
}

Fields: Prefer consistent names (snake_case or camelCase per project). Put variable data in fields, not only in the message string, so logs are queryable.

Wide events (canonical log lines)

For request-driven services, prefer one context-rich structured event per request per service over scattered log lines:

  • Middleware creates the event and owns timing, status, and emission — emit in finally so failures still produce the event. Handlers only add business fields along the way.
  • Include environment fields in every event: commit hash, service version, region.
  • Capture business context, not just mechanics: "premium customer failed a $2,499 checkout" beats "checkout failed".
  • Scattered step-by-step lines stay at debug level; the wide event is the queryable record of what happened.

Good vs Bad

Good:

logger.info({ request_id, method, path, status, duration_ms }, 'Request completed');
logger.error({ err, request_id }, 'Payment failed');
logger.debug({ order_id, step: 'validation' }, 'Validating order');

Bad:

console.log('User ' + user.email + ' did something');  // PII in log
logger.info('Token: ' + token);  // Secret in log
logger.error('Error: ' + err);   // May include stack or internal detail in message; use structured field

Rules

  • Do not add logs that dump full request/response or env vars. Suggest redaction or sampling if needed for debugging.
  • If the project has a logging or privacy policy (retention, PII, secrets), align with it.
  • Use the same library and format as the rest of the codebase. Do not introduce a second logging system without good reason.

Checklist

  • [ ] Level appropriate (error/warn/info/debug)
  • [ ] Context included (request_id, operation, duration where relevant)
  • [ ] No secrets or full PII in message or fields
  • [ ] Structured format (fields) when logger supports it
  • [ ] Matches project library and format

Anti-patterns

| Anti-pattern | Better approach | |--------------|-----------------| | Logging full request/response | Log method, path, status, duration; redact or omit body/headers | | Using console.log in server code | Use project logger with levels and structure | | Interpolating everything into message | Use structured fields (requestid, orderid, etc.) | | Logging at info for every iteration in a loop | Use debug or sample (e.g. every Nth) | | Leftover print-debugging (print(), fmt.Println, console.log) in production paths | Remove, or convert to logger.debug with fields | | "We'll redact later" | Redact or omit from the start; do not log secrets |

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.