<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<p>Application logging is a critical component of system observability, providing detailed event records that capture the “why” behind system behavior. Geode implements comprehensive structured logging in JSON format, making logs machine-readable, easily queryable, and integrable with modern log aggregation platforms.</p>
<p>Effective logging enables debugging, security auditing, performance analysis, and compliance tracking. Geode’s logging system balances detail with performance, providing rich context without impacting query throughput.</p>
<p>This guide covers logging architecture, configuration, best practices, log analysis techniques, and integration with popular log management platforms.</p>
<h3 id="structured-logging-architecture" class="position-relative d-flex align-items-center group">
<span>Structured Logging Architecture</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="structured-logging-architecture"
aria-haspopup="dialog"
aria-label="Share link: Structured Logging Architecture">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Geode uses structured logging where each log entry is a JSON object with consistent fields:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"timestamp"</span><span class="p">:</span> <span class="s2">"2026-01-24T10:15:30.123456Z"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query.executor"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query executed successfully"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"[email protected]"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_type"</span><span class="p">:</span> <span class="s2">"python"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mf">45.3</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"rows_returned"</span><span class="p">:</span> <span class="mi">1250</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"plan_type"</span><span class="p">:</span> <span class="s2">"indexed_lookup"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"trace_id"</span><span class="p">:</span> <span class="s2">"abc123def456"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"span_id"</span><span class="p">:</span> <span class="s2">"xyz789"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>Benefits</strong>:</p>
<ul>
<li><strong>Machine-Readable</strong>: Easy parsing and analysis with tools like jq, Elasticsearch, or Loki</li>
<li><strong>Queryable</strong>: Search and filter by any field</li>
<li><strong>Consistent</strong>: Predictable structure across all log entries</li>
<li><strong>Contextual</strong>: Rich metadata for debugging</li>
<li><strong>Correlatable</strong>: Links to traces and metrics via IDs</li>
</ul>
<h3 id="log-configuration" class="position-relative d-flex align-items-center group">
<span>Log Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="log-configuration"
aria-haspopup="dialog"
aria-label="Share link: Log Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="basic-configuration" class="position-relative d-flex align-items-center group">
<span>Basic Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="basic-configuration"
aria-haspopup="dialog"
aria-label="Share link: Basic Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="c"># geode.toml</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Log level: DEBUG, INFO, WARN, ERROR</span>
</span></span><span class="line"><span class="cl"><span class="nx">level</span> <span class="p">=</span> <span class="s2">"INFO"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Output format: json or text</span>
</span></span><span class="line"><span class="cl"><span class="nx">format</span> <span class="p">=</span> <span class="s2">"json"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Output destination: stdout, stderr, file</span>
</span></span><span class="line"><span class="cl"><span class="nx">output</span> <span class="p">=</span> <span class="s2">"stdout"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># File path (when output = "file")</span>
</span></span><span class="line"><span class="cl"><span class="nx">file</span> <span class="p">=</span> <span class="s2">"/var/log/geode/geode.log"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># File rotation settings</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_size</span> <span class="p">=</span> <span class="s2">"100MB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_count</span> <span class="p">=</span> <span class="mi">10</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_compress</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Include source location (file:line)</span>
</span></span><span class="line"><span class="cl"><span class="nx">include_caller</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Include hostname</span>
</span></span><span class="line"><span class="cl"><span class="nx">include_hostname</span> <span class="p">=</span> <span class="kc">true</span>
</span></span></code></pre></div>
<h4 id="environment-specific-configuration" class="position-relative d-flex align-items-center group">
<span>Environment-Specific Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="environment-specific-configuration"
aria-haspopup="dialog"
aria-label="Share link: Environment-Specific Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Development</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">level</span> <span class="p">=</span> <span class="s2">"DEBUG"</span>
</span></span><span class="line"><span class="cl"><span class="nx">format</span> <span class="p">=</span> <span class="s2">"text"</span> <span class="c"># Human-readable</span>
</span></span><span class="line"><span class="cl"><span class="nx">output</span> <span class="p">=</span> <span class="s2">"stdout"</span>
</span></span><span class="line"><span class="cl"><span class="nx">include_caller</span> <span class="p">=</span> <span class="kc">true</span>
</span></span></code></pre></div><p><strong>Production</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">level</span> <span class="p">=</span> <span class="s2">"INFO"</span>
</span></span><span class="line"><span class="cl"><span class="nx">format</span> <span class="p">=</span> <span class="s2">"json"</span> <span class="c"># Machine-readable</span>
</span></span><span class="line"><span class="cl"><span class="nx">output</span> <span class="p">=</span> <span class="s2">"file"</span>
</span></span><span class="line"><span class="cl"><span class="nx">file</span> <span class="p">=</span> <span class="s2">"/var/log/geode/geode.log"</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_size</span> <span class="p">=</span> <span class="s2">"100MB"</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_count</span> <span class="p">=</span> <span class="mi">30</span>
</span></span><span class="line"><span class="cl"><span class="nx">rotate_compress</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">include_caller</span> <span class="p">=</span> <span class="kc">false</span> <span class="c"># Reduce overhead</span>
</span></span></code></pre></div>
<h4 id="per-component-log-levels" class="position-relative d-flex align-items-center group">
<span>Per-Component Log Levels</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="per-component-log-levels"
aria-haspopup="dialog"
aria-label="Share link: Per-Component Log Levels">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure granular log levels for different subsystems:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">logging</span><span class="p">.</span><span class="nx">levels</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="s2">"geode.query"</span> <span class="p">=</span> <span class="s2">"DEBUG"</span>
</span></span><span class="line"><span class="cl"><span class="s2">"geode.transaction"</span> <span class="p">=</span> <span class="s2">"INFO"</span>
</span></span><span class="line"><span class="cl"><span class="s2">"geode.storage"</span> <span class="p">=</span> <span class="s2">"WARN"</span>
</span></span><span class="line"><span class="cl"><span class="s2">"geode.network"</span> <span class="p">=</span> <span class="s2">"INFO"</span>
</span></span><span class="line"><span class="cl"><span class="s2">"geode.security"</span> <span class="p">=</span> <span class="s2">"INFO"</span>
</span></span></code></pre></div>
<h3 id="log-levels" class="position-relative d-flex align-items-center group">
<span>Log Levels</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="log-levels"
aria-haspopup="dialog"
aria-label="Share link: Log Levels">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="debug" class="position-relative d-flex align-items-center group">
<span>DEBUG</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="debug"
aria-haspopup="dialog"
aria-label="Share link: DEBUG">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Detailed diagnostic information for development and troubleshooting:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"DEBUG"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query.optimizer"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query plan generated"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"plan_type"</span><span class="p">:</span> <span class="s2">"indexed_lookup"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"estimated_cost"</span><span class="p">:</span> <span class="mf">125.4</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"estimated_rows"</span><span class="p">:</span> <span class="mi">1250</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"index_candidates"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"User.email"</span><span class="p">,</span> <span class="s2">"User.created_at"</span><span class="p">],</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"selected_index"</span><span class="p">:</span> <span class="s2">"User.email"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"plan_json"</span><span class="p">:</span> <span class="s2">"{...}"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>Use Cases</strong>:</p>
<ul>
<li>Understanding query optimization decisions</li>
<li>Debugging application logic</li>
<li>Analyzing execution paths</li>
<li>Development and testing</li>
</ul>
<h4 id="info" class="position-relative d-flex align-items-center group">
<span>INFO</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="info"
aria-haspopup="dialog"
aria-label="Share link: INFO">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>General operational events indicating normal system behavior:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query.executor"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query executed successfully"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mf">45.3</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"rows_returned"</span><span class="p">:</span> <span class="mi">1250</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"cache_hit"</span><span class="p">:</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>Use Cases</strong>:</p>
<ul>
<li>Tracking query execution</li>
<li>Monitoring transaction commits</li>
<li>Connection lifecycle events</li>
<li>Checkpoint completion</li>
</ul>
<h4 id="warn" class="position-relative d-flex align-items-center group">
<span>WARN</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="warn"
aria-haspopup="dialog"
aria-label="Share link: WARN">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Warning conditions that don’t prevent operation but may require attention:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"WARN"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query.executor"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Slow query detected"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mf">1234.5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"threshold_ms"</span><span class="p">:</span> <span class="mi">1000</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_text"</span><span class="p">:</span> <span class="s2">"MATCH (n) RETURN n"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"recommendation"</span><span class="p">:</span> <span class="s2">"Add index or limit result set"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>Use Cases</strong>:</p>
<ul>
<li>Slow query detection</li>
<li>Connection pool pressure</li>
<li>Memory pressure warnings</li>
<li>Configuration issues</li>
</ul>
<h4 id="error" class="position-relative d-flex align-items-center group">
<span>ERROR</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="error"
aria-haspopup="dialog"
aria-label="Share link: ERROR">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Error conditions requiring immediate attention:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"ERROR"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.transaction"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Transaction failed to commit"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"transaction_id"</span><span class="p">:</span> <span class="s2">"tx-456"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"error"</span><span class="p">:</span> <span class="s2">"Serialization failure"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"error_code"</span><span class="p">:</span> <span class="s2">"40001"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"retry_count"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_count"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mi">2340</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"stack_trace"</span><span class="p">:</span> <span class="s2">"..."</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"[email protected]"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p><strong>Use Cases</strong>:</p>
<ul>
<li>Transaction failures</li>
<li>Connection errors</li>
<li>Storage errors</li>
<li>Authentication failures</li>
</ul>
<h3 id="log-categories" class="position-relative d-flex align-items-center group">
<span>Log Categories</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="log-categories"
aria-haspopup="dialog"
aria-label="Share link: Log Categories">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="query-logs" class="position-relative d-flex align-items-center group">
<span>Query Logs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="query-logs"
aria-haspopup="dialog"
aria-label="Share link: Query Logs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track query execution lifecycle:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="c1">// Query started
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"DEBUG"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query execution started"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_text"</span><span class="p">:</span> <span class="s2">"MATCH (u:User {email: $email}) RETURN u"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"parameters"</span><span class="p">:</span> <span class="p">{</span><span class="nt">"email"</span><span class="p">:</span> <span class="s2">"[email protected]"</span><span class="p">},</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"analyst"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Query completed
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query execution completed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"status"</span><span class="p">:</span> <span class="s2">"success"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mf">45.3</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"rows_returned"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"plan_cache_hit"</span><span class="p">:</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Query failed
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"ERROR"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.query"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Query execution failed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_id"</span><span class="p">:</span> <span class="s2">"q-12847"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"error"</span><span class="p">:</span> <span class="s2">"Syntax error near line 1"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"query_text"</span><span class="p">:</span> <span class="s2">"MATCHH (u:User) RETURN u"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"position"</span><span class="p">:</span> <span class="mi">0</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h4 id="transaction-logs" class="position-relative d-flex align-items-center group">
<span>Transaction Logs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="transaction-logs"
aria-haspopup="dialog"
aria-label="Share link: Transaction Logs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track transaction lifecycle:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="c1">// Transaction begin
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.transaction"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Transaction started"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"transaction_id"</span><span class="p">:</span> <span class="s2">"tx-456"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"isolation_level"</span><span class="p">:</span> <span class="s2">"SERIALIZABLE"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"analyst"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Transaction commit
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.transaction"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Transaction committed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"transaction_id"</span><span class="p">:</span> <span class="s2">"tx-456"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mi">2340</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"queries_executed"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"rows_modified"</span><span class="p">:</span> <span class="mi">125</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Transaction rollback
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"WARN"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.transaction"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Transaction rolled back"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"transaction_id"</span><span class="p">:</span> <span class="s2">"tx-456"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"reason"</span><span class="p">:</span> <span class="s2">"Serialization failure"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mi">1850</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"queries_executed"</span><span class="p">:</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h4 id="connection-logs" class="position-relative d-flex align-items-center group">
<span>Connection Logs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-logs"
aria-haspopup="dialog"
aria-label="Share link: Connection Logs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track client connectivity:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="c1">// Connection established
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.connection"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Client connected"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"connection_id"</span><span class="p">:</span> <span class="s2">"conn-789"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_address"</span><span class="p">:</span> <span class="s2">"192.168.1.100:54321"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_type"</span><span class="p">:</span> <span class="s2">"python"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_version"</span><span class="p">:</span> <span class="s2">"0.3.19"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"tls_version"</span><span class="p">:</span> <span class="s2">"TLS1.3"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Connection closed
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.connection"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Client disconnected"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"connection_id"</span><span class="p">:</span> <span class="s2">"conn-789"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_seconds"</span><span class="p">:</span> <span class="mi">3600</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"queries_executed"</span><span class="p">:</span> <span class="mi">1247</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"bytes_sent"</span><span class="p">:</span> <span class="mi">12458934</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"bytes_received"</span><span class="p">:</span> <span class="mi">458723</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Connection error
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"ERROR"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.connection"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Connection failed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_address"</span><span class="p">:</span> <span class="s2">"192.168.1.100:54321"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"error"</span><span class="p">:</span> <span class="s2">"TLS handshake failure"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"error_code"</span><span class="p">:</span> <span class="s2">"SSL_ERROR_HANDSHAKE_FAILURE"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h4 id="security-logs" class="position-relative d-flex align-items-center group">
<span>Security Logs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="security-logs"
aria-haspopup="dialog"
aria-label="Share link: Security Logs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track authentication and authorization:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="c1">// Authentication success
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.security"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"User authenticated"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"[email protected]"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_address"</span><span class="p">:</span> <span class="s2">"192.168.1.100"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"auth_method"</span><span class="p">:</span> <span class="s2">"password"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"session_id"</span><span class="p">:</span> <span class="s2">"sess-abc123"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Authentication failure
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"WARN"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.security"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Authentication failed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"[email protected]"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"client_address"</span><span class="p">:</span> <span class="s2">"192.168.1.100"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"reason"</span><span class="p">:</span> <span class="s2">"Invalid password"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"attempts"</span><span class="p">:</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Authorization failure
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"WARN"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.security"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Access denied"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"user"</span><span class="p">:</span> <span class="s2">"[email protected]"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"action"</span><span class="p">:</span> <span class="s2">"CREATE_GRAPH"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"resource"</span><span class="p">:</span> <span class="s2">"ProductionGraph"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"required_permission"</span><span class="p">:</span> <span class="s2">"graph:admin"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h4 id="storage-logs" class="position-relative d-flex align-items-center group">
<span>Storage Logs</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="storage-logs"
aria-haspopup="dialog"
aria-label="Share link: Storage Logs">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Track persistence operations:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="c1">// Checkpoint started
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.storage"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Checkpoint started"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"checkpoint_id"</span><span class="p">:</span> <span class="s2">"ckpt-123"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"wal_position"</span><span class="p">:</span> <span class="s2">"00000001000000AB"</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Checkpoint completed
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"INFO"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.storage"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Checkpoint completed"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"checkpoint_id"</span><span class="p">:</span> <span class="s2">"ckpt-123"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"duration_ms"</span><span class="p">:</span> <span class="mi">15234</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"bytes_written"</span><span class="p">:</span> <span class="mi">1073741824</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"buffers_flushed"</span><span class="p">:</span> <span class="mi">131072</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Disk space warning
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"level"</span><span class="p">:</span> <span class="s2">"WARN"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"logger"</span><span class="p">:</span> <span class="s2">"geode.storage"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"message"</span><span class="p">:</span> <span class="s2">"Low disk space"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"filesystem"</span><span class="p">:</span> <span class="s2">"/var/lib/geode"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"bytes_available"</span><span class="p">:</span> <span class="mi">1073741824</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"bytes_total"</span><span class="p">:</span> <span class="mi">107374182400</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="nt">"usage_percent"</span><span class="p">:</span> <span class="mi">90</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
<h3 id="log-analysis-techniques" class="position-relative d-flex align-items-center group">
<span>Log Analysis Techniques</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="log-analysis-techniques"
aria-haspopup="dialog"
aria-label="Share link: Log Analysis Techniques">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="using-jq-for-log-analysis" class="position-relative d-flex align-items-center group">
<span>Using jq for Log Analysis</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="using-jq-for-log-analysis"
aria-haspopup="dialog"
aria-label="Share link: Using jq for Log Analysis">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Filter by level</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Show only errors</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.level == "ERROR")'</span> /var/log/geode/geode.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Show warnings and errors</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.level == "WARN" or .level == "ERROR")'</span> /var/log/geode/geode.log
</span></span></code></pre></div><p><strong>Filter by time range</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Logs from last hour</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.timestamp > "2026-01-24T09:00:00Z")'</span> /var/log/geode/geode.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Logs within specific timeframe</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.timestamp >= "2026-01-24T09:00:00Z" and
</span></span></span><span class="line"><span class="cl"><span class="s1"> .timestamp <= "2026-01-24T10:00:00Z")'</span> /var/log/geode/geode.log
</span></span></code></pre></div><p><strong>Analyze slow queries</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Queries over 1 second</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.logger == "geode.query" and .duration_ms > 1000) |
</span></span></span><span class="line"><span class="cl"><span class="s1"> {query_id, duration_ms, query_text}'</span> /var/log/geode/geode.log
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Top 10 slowest queries</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.logger == "geode.query") | {query_id, duration_ms, query_text}'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> /var/log/geode/geode.log <span class="p">|</span> jq -s <span class="s1">'sort_by(.duration_ms) | reverse | .[0:10]'</span>
</span></span></code></pre></div><p><strong>Group errors by type</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Count errors by message</span>
</span></span><span class="line"><span class="cl">jq -r <span class="s1">'select(.level == "ERROR") | .message'</span> /var/log/geode/geode.log <span class="p">|</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> sort <span class="p">|</span> uniq -c <span class="p">|</span> sort -rn
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Group by error code</span>
</span></span><span class="line"><span class="cl">jq -r <span class="s1">'select(.level == "ERROR" and .error_code) | .error_code'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> /var/log/geode/geode.log <span class="p">|</span> sort <span class="p">|</span> uniq -c <span class="p">|</span> sort -rn
</span></span></code></pre></div><p><strong>Track user activity</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Queries by user</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.logger == "geode.query") | {user, query_id}'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> /var/log/geode/geode.log <span class="p">|</span> jq -r <span class="s1">'.user'</span> <span class="p">|</span> sort <span class="p">|</span> uniq -c <span class="p">|</span> sort -rn
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Failed authentications by user</span>
</span></span><span class="line"><span class="cl">jq <span class="s1">'select(.logger == "geode.security" and .message == "Authentication failed") |
</span></span></span><span class="line"><span class="cl"><span class="s1"> {user, client_address, reason}'</span> /var/log/geode/geode.log
</span></span></code></pre></div>
<h3 id="log-aggregation-and-centralization" class="position-relative d-flex align-items-center group">
<span>Log Aggregation and Centralization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="log-aggregation-and-centralization"
aria-haspopup="dialog"
aria-label="Share link: Log Aggregation and Centralization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="elasticsearch--kibana" class="position-relative d-flex align-items-center group">
<span>Elasticsearch + Kibana</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="elasticsearch--kibana"
aria-haspopup="dialog"
aria-label="Share link: Elasticsearch &#43; Kibana">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Filebeat Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># filebeat.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">filebeat.inputs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">log</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">paths</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/var/log/geode/*.log</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">json.keys_under_root</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">json.add_error_key</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">json.message_key</span><span class="p">:</span><span class="w"> </span><span class="l">message</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">processors</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">add_host_metadata</span><span class="p">:</span><span class="w"> </span><span class="l">~</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">add_cloud_metadata</span><span class="p">:</span><span class="w"> </span><span class="l">~</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">add_docker_metadata</span><span class="p">:</span><span class="w"> </span><span class="l">~</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output.elasticsearch</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"elasticsearch:9200"</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">index</span><span class="p">:</span><span class="w"> </span><span class="s2">"geode-logs-%{+yyyy.MM.dd}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">username</span><span class="p">:</span><span class="w"> </span><span class="s2">"elastic"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="s2">"${ELASTICSEARCH_PASSWORD}"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">setup.kibana</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">host</span><span class="p">:</span><span class="w"> </span><span class="s2">"kibana:5601"</span><span class="w">
</span></span></span></code></pre></div><p><strong>Kibana Query Examples</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># Slow queries
</span></span><span class="line"><span class="cl">level: "WARN" AND message: "Slow query" AND duration_ms > 1000
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># Failed transactions
</span></span><span class="line"><span class="cl">level: "ERROR" AND logger: "geode.transaction"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># User activity
</span></span><span class="line"><span class="cl">user: "[email protected]" AND logger: "geode.query"
</span></span></code></pre></div>
<h4 id="grafana-loki" class="position-relative d-flex align-items-center group">
<span>Grafana Loki</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="grafana-loki"
aria-haspopup="dialog"
aria-label="Share link: Grafana Loki">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Promtail Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># promtail.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">server</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">http_listen_port</span><span class="p">:</span><span class="w"> </span><span class="m">9080</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">grpc_listen_port</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">positions</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">filename</span><span class="p">:</span><span class="w"> </span><span class="l">/tmp/positions.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">clients</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="l">http://loki:3100/loki/api/v1/push</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">scrape_configs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">job_name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">static_configs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">targets</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">localhost</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">job</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">__path__</span><span class="p">:</span><span class="w"> </span><span class="l">/var/log/geode/*.log</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">pipeline_stages</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">json</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">expressions</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">level</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">logger</span><span class="p">:</span><span class="w"> </span><span class="l">logger</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">timestamp</span><span class="p">:</span><span class="w"> </span><span class="l">timestamp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">message</span><span class="p">:</span><span class="w"> </span><span class="l">message</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query_id</span><span class="p">:</span><span class="w"> </span><span class="l">query_id</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="l">user</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">timestamp</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">source</span><span class="p">:</span><span class="w"> </span><span class="l">timestamp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">format</span><span class="p">:</span><span class="w"> </span><span class="l">RFC3339Nano</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">logger</span><span class="p">:</span><span class="w">
</span></span></span></code></pre></div><p><strong>LogQL Queries</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># All error logs
</span></span><span class="line"><span class="cl">{job="geode"} | json | level="ERROR"
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># Slow queries
</span></span><span class="line"><span class="cl">{job="geode"} | json | logger="geode.query" | duration_ms > 1000
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># User activity rate
</span></span><span class="line"><span class="cl">rate({job="geode"} | json | user="[email protected]" [5m])
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># Error rate by logger
</span></span><span class="line"><span class="cl">sum(rate({job="geode"} | json | level="ERROR" [5m])) by (logger)
</span></span></code></pre></div>
<h4 id="splunk" class="position-relative d-flex align-items-center group">
<span>Splunk</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="splunk"
aria-haspopup="dialog"
aria-label="Share link: Splunk">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Inputs Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="c1"># inputs.conf</span>
</span></span><span class="line"><span class="cl"><span class="k">[monitor:///var/log/geode/*.log]</span>
</span></span><span class="line"><span class="cl"><span class="na">disabled</span> <span class="o">=</span> <span class="s">false</span>
</span></span><span class="line"><span class="cl"><span class="na">index</span> <span class="o">=</span> <span class="s">geode</span>
</span></span><span class="line"><span class="cl"><span class="na">sourcetype</span> <span class="o">=</span> <span class="s">geode:json</span>
</span></span></code></pre></div><p><strong>Search Queries</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># Slow queries
</span></span><span class="line"><span class="cl">index=geode level=WARN message="Slow query" | stats avg(duration_ms) by query_text
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># Error trends
</span></span><span class="line"><span class="cl">index=geode level=ERROR | timechart count by logger
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># Transaction failures
</span></span><span class="line"><span class="cl">index=geode logger="geode.transaction" level=ERROR | stats count by error
</span></span></code></pre></div>
<h3 id="logging-best-practices" class="position-relative d-flex align-items-center group">
<span>Logging Best Practices</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="logging-best-practices"
aria-haspopup="dialog"
aria-label="Share link: Logging Best Practices">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p><strong>Appropriate Log Levels</strong>: Use DEBUG sparingly in production to avoid performance impact and log volume explosion.</p>
<p><strong>Structured Fields</strong>: Use structured fields instead of string interpolation for queryable data.</p>
<p><strong>Sensitive Data Redaction</strong>: Avoid logging passwords, API keys, or personal data. Redact sensitive values automatically.</p>
<p><strong>Correlation IDs</strong>: Include trace IDs, request IDs, and query IDs for correlation across log entries.</p>
<p><strong>Contextual Information</strong>: Include user, client type, and other context in every log entry.</p>
<p><strong>Log Sampling</strong>: Sample high-volume DEBUG logs to reduce overhead while maintaining visibility.</p>
<p><strong>Retention Policies</strong>: Define appropriate retention periods based on compliance and operational needs (typically 7-90 days).</p>
<p><strong>Performance Impact</strong>: Monitor logging overhead and adjust levels if exceeding 5% CPU impact.</p>
<p><strong>Timezone Consistency</strong>: Use UTC timestamps consistently to avoid timezone confusion.</p>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/observability/"
>System Observability</a>
- Observability pillars</li>
<li><a
href="/tags/tracing/"
>Distributed Tracing</a>
- Request flow tracing</li>
<li><a
href="/tags/monitoring/"
>System Monitoring</a>
- Monitoring strategies</li>
<li><a
href="/tags/metrics/"
>Performance Metrics</a>
- Metrics collection</li>
<li><a
href="/tags/troubleshooting/"
>Troubleshooting</a>
- Debugging techniques</li>
<li><a
href="/tags/security/"
>Security</a>
- Security logging</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li>Structured Logging Best Practices</li>
<li>Log Analysis Techniques</li>
<li>Log Aggregation Platform Comparison</li>
<li>Production Logging Patterns</li>
<li>Compliance and Audit Logging</li>
</ul>
Tag
1 article
Application Logging
Comprehensive logging guide for Geode including structured logging, log levels, log aggregation, analysis, and logging best practices for production deployments.