Agent skill

structured-logs-rfc-34

RFC-34 compliant structured logging standards for Java services. Covers JSON log format, structured arguments, required fields, and Logback configuration. Use when implementing or reviewing logging in Java services.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/structured-logs-rfc-34

Metadata

Additional technical details for this skill

tags
java logging rfc-34 structured-logs observability
version
1.0.0
category
observability
technology
java

SKILL.md

Structured Logs (RFC-34)

RFC-34 compliant structured logging standards for Java services.

When to use this skill

  • Implementing logging in new Java services
  • Converting unstructured logs to structured format
  • Reviewing logging practices
  • Configuring Logback for JSON output
  • Adding business context to logs

Skill Contents

Sections

Available Resources

📚 references/ - Detailed documentation


Quick Start

1. Add Dependencies

groovy
implementation 'org.springframework.boot:spring-boot-starter-logging'
implementation 'net.logstash.logback:logstash-logback-encoder:${latest_version}'

2. Use Structured Arguments

java
import static net.logstash.logback.argument.StructuredArguments.kv;

log.info("Transaction processed",
         kv("transaction_id", txn.getId()),
         kv("user_id", user.getId()));

This produces JSON with separate fields for transaction_id and user_id.

Required Fields

All logs must include these fields:

Field Description
@timestamp Log timestamp
message Log message text
logger Logger name
thread_name Thread name
level Log level (INFO, WARN, ERROR, etc.)
dd.service Service name
dd.env Environment
dd.version Service version

Best Practices

  • Add business identifiers (IDs) as separate fields instead of embedding in messages
  • Keep log message text clear and concise
  • Use appropriate log levels consistently
  • Include enough context to understand the event without additional queries
  • Use snake_case for field names
  • For logs containing objects, properly structure them rather than using toString()

Example

java
// ✅ Good - structured fields
log.info("Order created", kv("order_id", orderId), kv("user_id", userId), kv("amount", amount));

// ❌ Bad - embedded in message
log.info("Order {} created for user {} with amount {}", orderId, userId, amount);

References

Reference Description
references/logging-standards.md Complete RFC-34 implementation guide

Related Rules

Related Skills

Skill Purpose
java-standards General Java standards
java-testing Testing log output

Didn't find tool you were looking for?

Be as detailed as possible for better results