1"use strict";(globalThis.webpackChunkmy_website=globalThis.webpackChunkmy_website||[]).push([[4198],{73418(e,n,s){s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"impact-finance/self-hosted/application-logs","title":"Application logs","description":"DES outputs logs to STDOUT in JSON format. You can control the log level using the LOG_LEVEL environment variable (read more in the Environment variables section).","source":"@site/docs/impact-finance/self-hosted/application-logs.md","sourceDirName":"impact-finance/self-hosted","slug":"/impact-finance/self-hosted/application-logs","permalink":"/docs/impact-finance/self-hosted/application-logs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Environment Variables","permalink":"/docs/impact-finance/self-hosted/environment-variables"},"next":{"title":"CA certificates","permalink":"/docs/impact-finance/self-hosted/ca-certificates"}}');var t=s(74848),r=s(28453);const l={},c="Application logs",o={},a=[{value:"Web server",id:"web-server",level:2}];function d(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"application-logs",children:"Application logs"})}),"\n",(0,t.jsxs)(n.p,{children:["DES outputs logs to ",(0,t.jsx)(n.em,{children:"STDOUT"})," in ",(0,t.jsx)(n.code,{children:"JSON"})," format. You can control the log level using the ",(0,t.jsx)(n.code,{children:"LOG_LEVEL"})," environment variable (read more in the ",(0,t.jsx)(n.a,{href:"/docs/impact-finance/self-hosted/environment-variables",children:"Environment variables"})," section)."]}),"\n",(0,t.jsxs)(n.p,{children:["Expect following log fields to always be present regardless of if a log entry was produced by the ",(0,t.jsx)(n.a,{href:"/docs/impact-finance/self-hosted/getting-started#running-the-web-server",children:"web server"})," or the ",(0,t.jsx)(n.a,{href:"/docs/impact-finance/self-hosted/getting-started#background-worker",children:"background worker"}),":"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"name"})," - usually with value ",(0,t.jsx)(n.code,{children:"des-web-service"})," or ",(0,t.jsx)(n.code,{children:"good_job"})]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.code,{children:"hostname"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"pid"})," - usually ",(0,t.jsx)(n.code,{children:"1"})," since it's an OCI container"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"level"})," - the log level"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"time"})," - an ",(0,t.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/ISO_8601",children:"ISO-8601"})," string representation of the date and time the log entry was produced"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"v"})," - the current DES image version running, truncated to 7 characters"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"msg"})," - the log message"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"web-server",children:"Web server"}),"\n",(0,t.jsxs)(n.p,{children:["Specifically for logs generated by the ",(0,t.jsx)(n.a,{href:"/docs/impact-finance/self-hosted/getting-started#running-the-web-server",children:"web server"}),", the following fields will also be present:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"request_id"})," - identifier for the http request that generated the log entry. You can explicitly set this to a value you prefer if you configure a load balancer / reverse proxy to add a ",(0,t.jsx)(n.code,{children:"X-Request-Id"})," header. If such header is not present, DES will generate a request id itself"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"request"})," - an object with the following sub keys/fields","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"method"})," - HTTP method used"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"path"})," - path requested"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"user_agent"})," - user agent string for the requesting client"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"On top of this list there will be more fields depending on the specific log entry."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.