Structured logging

구조화 로그

Write logs as stable fields so they can be searched and aggregated.

···
html
<div class="demo"><div class="title">PARSE ONE LOG</div><div class="scene"><div class="raw">ERROR 7f3a payment timeout</div><div class="fields"><span>level=ERROR</span><span>trace=7f3a</span><span>event=payment</span><span>reason=timeout</span></div></div></div>
css
.demo{width:min(94vw,690px);height:min(88vh,320px);box-sizing:border-box;padding:clamp(9px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:600 clamp(12px,2.4vmin,16px)/1.25 var(--font-sans,"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,sans-serif);display:flex;flex-direction:column;gap:clamp(7px,2vmin,14px);overflow:hidden}.title{color:var(--accent);font:700 clamp(12px,2.4vmin,16px)/1.2 var(--font-sans,"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,sans-serif);letter-spacing:.04em}.scene{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.scene{flex-direction:column;gap:12px}.raw{width:100%;box-sizing:border-box;padding:9px;background:var(--bg);border:1px solid var(--line);font:600 clamp(12px,2.4vmin,15px)/1.2 ui-monospace,monospace;white-space:nowrap;overflow:hidden}.fields{display:flex;flex-wrap:wrap;justify-content:center;gap:5px}.fields span{border:1px solid var(--accent);border-radius:5px;padding:5px;font:600 clamp(12px,2.4vmin,15px)/1.2 ui-monospace,monospace;animation:parse 2.4s infinite}.fields span:nth-child(2){animation-delay:.2s}.fields span:nth-child(3){animation-delay:.4s}.fields span:nth-child(4){animation-delay:.6s}@keyframes parse{0%,15%,100%{transform:translateY(-4px);border-color:var(--line);background:var(--bg)}35%,85%{transform:translateY(0);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--surface))}}

Structured logging records time, severity, request ID, and event name as distinct fields rather than only a free-form sentence. Collectors can search those fields and group events for one request.

The demo splits a raw line into field chips. Keep field names and value formats consistent across services, and avoid casually including user input or personal data.

When to use

Use it when logs must be filtered precisely by ID, severity, or event.

Open as page ↗