CINXE.COM

How To Start Logging With NLog | Better Stack Community

<!DOCTYPE html> <html lang='en' prefix='og: https://ogp.me/ns#'> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'> <title>How To Start Logging With NLog | Better Stack Community</title> <meta content='width=device-width,initial-scale=1' name='viewport'> <link href='https://cdnjs.betterstack.com' rel='preconnect'> <link href='https://cdnjs.betterstack.com' rel='dns-prefetch'> <link href='https://www.googletagmanager.com' rel='preconnect'> <link href='https://www.googletagmanager.com' rel='dns-prefetch'> <link href='https://plausible.io' rel='preconnect'> <link href='https://plausible.io' rel='dns-prefetch'> <link href='https://forms.hsforms.com' rel='preconnect'> <link href='https://forms.hsforms.com' rel='dns-prefetch'> <link href='https://js.hsforms.net' rel='preconnect'> <link href='https://js.hsforms.net' rel='dns-prefetch'> <link href='https://connect.facebook.net' rel='preconnect'> <link href='https://connect.facebook.net' rel='dns-prefetch'> <link href='https://static.ads-twitter.com' rel='preconnect'> <link href='https://static.ads-twitter.com' rel='dns-prefetch'> <link href='https://bat.bing.com' rel='preconnect'> <link href='https://bat.bing.com' rel='dns-prefetch'> <link href='https://snap.licdn.com' rel='preconnect'> <link href='https://snap.licdn.com' rel='dns-prefetch'> <link href='https://googleads.g.doubleclick.net' rel='preconnect'> <link href='https://googleads.g.doubleclick.net' rel='dns-prefetch'> <link href='https://analytics.twitter.com' rel='preconnect'> <link href='https://analytics.twitter.com' rel='dns-prefetch'> <link href='/assets/favicon-ad4a170f31b6075c4d7ea5e23ce36677b3412bdd2fabc48d1b688bc535c8821c.png' rel='shortcut icon'> <meta content='Learn how to start logging with NLog and go from basics to best practices in no time.' name='description'> <meta content='website' property='og:type'> <meta content='How To Start Logging With NLog | Better Stack Community' property='og:title'> <meta content='Learn how to start logging with NLog and go from basics to best practices in no time.' property='og:description'> <meta content='https://betterstack.com/og-image/how-to-start-logging-with-nlog.png' property='og:image'> <meta content='summary_large_image' property='twitter:card'> <meta content='betterstackhq' property='twitter:site'> <meta content='How To Start Logging With NLog | Better Stack Community' property='twitter:title'> <meta content='Learn how to start logging with NLog and go from basics to best practices in no time.' property='twitter:description'> <meta content='https://betterstack.com/og-image/how-to-start-logging-with-nlog.png' property='twitter:image'> <meta content='no-cache' name='turbo-cache-control'> <link href='https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/' rel='canonical'> <meta content='https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/' property='og:url'> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="77-Kg2F5xpTMlRLeBW-nS0V8z5BCN4wkdMGADWv1cm5V3LVjvzGywE0qOfVXjU-Pn_r4YoHkjMZ8KQq44PRCOw" /> <meta name="csp-nonce" content="ab06867eab962ecea55fb2313105e092" /> <link href='https://cdnjs.betterstack.com/@vueform/multiselect@2.5.7/themes/default.css' rel='stylesheet'> <link href='https://cdnjs.betterstack.com/floating-vue@2.0.0-beta.24/dist/style.css' rel='stylesheet'> <link href='https://cdnjs.betterstack.com/@docsearch/css@3.5.2/dist/style.css' rel='stylesheet'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff' rel='preload'> <style> @font-face { font-family: "Roobert"; font-style: normal; font-weight: 400; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Regular.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Regular.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 500; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Medium.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Medium.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 600; font-display: swap; src: url("/static/fonts/Roobert/Roobert-SemiBold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-SemiBold.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 700; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Bold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Bold.woff") format("woff"); } </style> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <style> @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Regular'), local('HelveticaNowText-Regular'), url('/static/fonts/Helvetica/HelveticaNowText-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Medium'), local('HelveticaNowText-Medium'), url('/static/fonts/Helvetica/HelveticaNowText-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Bold'), local('HelveticaNowText-Bold'), url('/static/fonts/Helvetica/HelveticaNowText-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Medium'), local('HelveticaNowDisplay-Medium'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Bold'), local('HelveticaNowDisplay-Bold'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } </style> <script defer='' src='https://www.googletagmanager.com/gtag/js?id=G-9FLKD0MQYY'></script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> window.dataLayer = window.dataLayer || []; function gtag(){window.dataLayer.push(arguments);} gtag('js', new Date()); gtag('set', 'linker', { 'domains': ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }); gtag('config', 'G-9FLKD0MQYY', { linker: { domains: ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }}); gtag('config', 'AW-10805602682', { linker: { domains: ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }}); </script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1062799887416376'); </script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); twq('config','o7hjd'); </script> <script data-domain='betterstack.com' defer='' src='https://plausible.io/js/plausible.js'></script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> !function(e,t,n,a,o){var c,r,d;e[o]=e[o]||[],c=function(){var t={ti:"17516957"};t.q=e[o],e[o]=new UET(t),e[o].push("pageLoad")}, (r=t.createElement(n)).src="//bat.bing.com/bat.js",r.async=1,r.onload=r.onreadystatechange=function(){var e=this.readyState;e&&"loaded"!==e&&"complete"!==e|| (c(),r.onload=r.onreadystatechange=null)},m=t.querySelector("[nonce]"),m&&r.setAttribute("nonce",m.nonce||m.getAttribute("nonce")),(d=t.getElementsByTagName(n) [0]).parentNode.insertBefore(r,d)}(window,document,"script",0,"uetq"); </script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> _linkedin_partner_id = "3533474"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); (function(l) {if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]}var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script");b.type = "text/javascript";b.async = true; b.nonce = "ab06867eab962ecea55fb2313105e092"; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> !function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0;var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document); rdt('init', 't2_bywzx23t', {"optOut":false,"useDecimalCurrencyValues":true}); rdt('track', 'PageVisit'); </script> <script defer='' nonce='ab06867eab962ecea55fb2313105e092'> document.addEventListener('turbo:load', function(event) { if (typeof gtag === 'function') { gtag('set', 'page_path', location.pathname); fbq('track', 'PageView'); twq('track','PageView'); uetq.push('event', 'page_view', { 'page_path': location.pathname }); rdt('track', 'PageVisit'); return gtag('event', 'page_view'); } }); // remove noscript elements which break DOMParser document.addEventListener('turbo:before-render', function (event) { event.detail.newBody.querySelectorAll('noscript').forEach((e) => e.remove()); }); </script> <script type="importmap" data-turbo-track="reload" nonce="ab06867eab962ecea55fb2313105e092">{ "imports": { "admin_controllers/article_form_controller": "/assets/admin_controllers/article_form_controller-093d791912986e6d67b7a2fcd5295875dd92901ff6ce65d2c7a244ff95cbaf9d.js", "admin_controllers": "/assets/admin_controllers/index-251bd0d37d81d4101c7746067926201b8ccb0a3fcb4ced1e27a144e7f27e1964.js", "api/NaturalLanguageParserApi": "/assets/api/NaturalLanguageParserApi-85e7f98db0cb7fc89adeed477ecc3f68b1fa7ff41237591b77ec5e9b7c5714f0.js", "application_controllers/account_settings_controller": "/assets/application_controllers/account_settings_controller-0c78fc0dde7cb83830c6a6e0cd69488dacbbb2165ba18fce9831accd172a22ce.js", "application_controllers/command_controller": "/assets/application_controllers/command_controller-033b711b2e0fe9561562f0f7fc741976a65edd54294a5b074bd416954e15af99.js", "application_controllers/command_palette_controller": "/assets/application_controllers/command_palette_controller-63c7905f99026161d164192e26e7bbc822673d236189d07573a0faecae9fcca1.js", "application_controllers/command_palette_hierarchy_controller": "/assets/application_controllers/command_palette_hierarchy_controller-03324b50b668dbc97fa3d4cfaff34614d2016dd4bd6ca7e6188663af1e23b282.js", "application_controllers/dropdown_controller": "/assets/application_controllers/dropdown_controller-52e7f44fe04d4fd1035d23198a9a61730bf5f56373eb3119f1395308d14f1fbe.js", "application_controllers/front_chat_controller": "/assets/application_controllers/front_chat_controller-f743662f29f7afe23a682e2351074dce796cdcf3103169e268dbcc9e9a5e5fe4.js", "application_controllers/hotkeys_controller": "/assets/application_controllers/hotkeys_controller-2c32447898227cf3b026adcb96a6477228ee6dd66de62902226ae75e768764b5.js", "application_controllers": "/assets/application_controllers/index-aa644584c697bee855575cba40aec5cf05a967074d1fc12f678362f238447604.js", "application_controllers/input_self_select_controller": "/assets/application_controllers/input_self_select_controller-587ca3c4027f85377bf8d801166f68c26ff22a37c0efd6f5fd16fab4aa377631.js", "application_controllers/marketing_banner_controller": "/assets/application_controllers/marketing_banner_controller-ad11b32b6cc2cef94caf518358a6a61653f0276a130078720ab96569480f696a.js", "application_controllers/marketing_banner_form_controller": "/assets/application_controllers/marketing_banner_form_controller-bc9c74d362d3cfbcf515e7775015dbf660b424f3e7cc23f3326767f338bd1d44.js", "application_controllers/menu_controller": "/assets/application_controllers/menu_controller-1242dee1a020ff79d024cc107b27fe751d9bab822201808bbae462f96f5e04d1.js", "application_controllers/nav_toggle_controller": "/assets/application_controllers/nav_toggle_controller-a5303aa9c92cf2089a725ef839eec0eb899179be7bad2bf937e71a0da318937d.js", "application_controllers/notification_toast_controller": "/assets/application_controllers/notification_toast_controller-4a7916ac3cb0201a02f4a2035f135dbce18fe0c68c29db6b55772e1278fc3f85.js", "application_controllers/notification_toasts_controller": "/assets/application_controllers/notification_toasts_controller-cc673788aa19747ae5b1cad480442d3bacc4e72b485f486e1f21a1f47c599d22.js", "application_controllers/payment/calculator_controller": "/assets/application_controllers/payment/calculator_controller-bc992e3fcd9906bc2478a5403899565dc768c659116f59cc74514ad873eaea70.js", "application_controllers/payment/change_plan_controller": "/assets/application_controllers/payment/change_plan_controller-6e868397ee1bc2e35e99187d69834227c09c2d507098607a30496f8e83bca3a6.js", "application_controllers/payment/enter_card_controller": "/assets/application_controllers/payment/enter_card_controller-30bce23b5644449065e1e5ad5930b819923b625dc861683a25ad243ea80394da.js", "application_controllers/payment/plan_controller": "/assets/application_controllers/payment/plan_controller-2ec7d360f0588646c6a58cc9a9a699f408f8134d18e6c1d922effe55e13ca570.js", "application_controllers/payment/refund_controller": "/assets/application_controllers/payment/refund_controller-f0e76d028f19f14a902b7ee94c74e88cf03e97c41d9e4d767bf7ff1fab9bfbea.js", "application_controllers/plan_product_controller": "/assets/application_controllers/plan_product_controller-fd3609dcf56b5849a034dde2558bf83a0021412185845b83299aa1e18051240b.js", "application_controllers/plan_product_variable_controller": "/assets/application_controllers/plan_product_variable_controller-4ce92a01c700b623202a39711276a6c832dbec7e3d228a3f5b32ad6eb64b9d0a.js", "application_controllers/prefilled_demo_modal_controller": "/assets/application_controllers/prefilled_demo_modal_controller-b903f7bba8a860dd64a1242a732ee55951f2ca90393f43e4c73d46fea1ecee53.js", "application_controllers/push_notifications_controller": "/assets/application_controllers/push_notifications_controller-2e004a7d669fdc2fef6802fefde8d63b22521a447d2876ac5b886b8bbfe7abb2.js", "application_controllers/roles/permission_toggle_controller": "/assets/application_controllers/roles/permission_toggle_controller-239116552b060934f75fb7dc5456c23929b0123d4f15b66de7c4e2d01c79f434.js", "application_controllers/search/base_controller": "/assets/application_controllers/search/base_controller-70ebd53d1732fed0f93af77b0a5641d2756c359bfcce5aea6fa19319aedc4abb.js", "application_controllers/single_sign_on/generic_controller": "/assets/application_controllers/single_sign_on/generic_controller-8a38c9acced8bc901e4389e11632c56533bd287d7660db4727eb3ee2da02a24e.js", "application_controllers/single_sign_on/okta_controller": "/assets/application_controllers/single_sign_on/okta_controller-301c6f5ef5ba086f7fe432ff24e4ac3c031c06102b7a0da6ba94d1453f0bacb8.js", "application_controllers/transition_controller": "/assets/application_controllers/transition_controller-c6a61c0df4f842c56ee6f48e8c615d5c5828536643c801b0cdca2e2fd6086ed3.js", "articles/tabs": "/assets/articles/tabs-111303381549055f8295ac48a24c41debb4a2d570160fc669b83e56e16b6dcd3.js", "articles_controllers/body_controller": "/assets/articles_controllers/body_controller-e46956b8ad9bdb57ef53871c70b0152582b9f9c2c516eb6fc0960194252d0c45.js", "articles_controllers/clipboard_controller": "/assets/articles_controllers/clipboard_controller-c3fe3cf960ab3975ae45ae7534d18a183cd0b7aa0cb52c8cc3c6a9486e3e5f5c.js", "articles_controllers/code_controller": "/assets/articles_controllers/code_controller-ba91cc6d90f367aabd0aea8d58fe3457a029e81dba595656792ba46d233345f0.js", "articles_controllers": "/assets/articles_controllers/index-111d288d1c02d07a6e35f2e5a183c1684ebc430f926dc285e2ac90577f0cc90a.js", "articles_controllers/lightbox_controller": "/assets/articles_controllers/lightbox_controller-47f223cbbc128ac82d59fe796e6b00ccd3d42cff086ab52631cfaf0c34b24a0c.js", "articles_controllers/search_controller": "/assets/articles_controllers/search_controller-0d3a342441e0713b1930414fb0e7c1716dead6fb5ce47f9c35dfccb2ea554069.js", "articles_controllers/toc_controller": "/assets/articles_controllers/toc_controller-c9ec659d078e715f8447e6bb4ea289b29b6c4e68dc17a97e168cf6e15b7a1386.js", "articles_controllers/toggle_controller": "/assets/articles_controllers/toggle_controller-e7d2aef0234491a5b059688097a6f1d6d9557abc7fe579f2063ead389c57800b.js", "betterstack_v2/carousel": "/assets/betterstack_v2/carousel-05024cefdac5d83dea490e1df67ba50fedb91d6a3e537540e2bb2c1b92e00694.js", "betterstack_v2/collapse": "/assets/betterstack_v2/collapse-1cdfd31392c35357359391ba794e3ef0f13a72bcb9c5b8270316b2e0d4f8d11e.js", "betterstack_v2/gallery": "/assets/betterstack_v2/gallery-4c68f91383c831f5389efe2679042b625754e0ac00bf09c02f36bc2ce3cb683a.js", "betterstack_v2/menu": "/assets/betterstack_v2/menu-b1ec6baad54fa8b78965f501426b1d58ec12eb070d399ff582cae7078cfd260f.js", "betterstack_v2/search": "/assets/betterstack_v2/search-09cfb8e126e955ecaeaf2e90deb83fd79a6cda9ee26433f97a0e577e7f7c3a33.js", "betterstack_v2/slide": "/assets/betterstack_v2/slide-c6d35378bfed6bea175bc7493e0d5a18b4700f2bd773959c4d869dd645a79adf.js", "betterstack_v2/toggle": "/assets/betterstack_v2/toggle-65841dc64993ca0e98881ed758b2f7533eaded5a4b8b405b47d55d8dbe9fca45.js", "channels": "/assets/channels/index-0c17d2125cae6f89a5c8d36d4e8d48d7e46b72e792349605b94a92822223fedf.js", "common/aos": "/assets/common/aos-2b4aafcba2495ae196d810350e01a2acc682c5aedec5bd77cbfe0d520dc2957f.js", "common/billing": "/assets/common/billing-0cdad1fe2d53869866453e3acf1fad0bc996c0bee73eabdf216172cb84f78468.js", "common/copy": "/assets/common/copy-0a1dad74b3201175c8b20b23d840f49ea78d3e8109602788431b95d09a218c4d.js", "common/data-disable-with-spinner": "/assets/common/data-disable-with-spinner-c136ea5779d65691524fb4e83a37bd3339094233087f672b7338c58cd77493bf.js", "common/drag-n-drop": "/assets/common/drag-n-drop-ec4c29d70a9bf14961617ae1aa3e723519650724c12bf4c406f8be026ae8d4da.js", "common/lazy": "/assets/common/lazy-3eb764101958480a12b2c50eb92af3adde35463ada26d277a0982026c785195f.js", "common/links": "/assets/common/links-09ddbfd3c3bb198b2b6cc37b95c788d284719599f065ca503cd6de55331c8e29.js", "common/modals": "/assets/common/modals-d6289315eb7bfe84680ec1d1f59d05419c173e09fa01528edb2bb6d7ef4e93e2.js", "common/posthog": "/assets/common/posthog-8b1f452704e4760f10ee4ffdac9f26024a09304f9f6e77dd4984bc0eed6a28ec.js", "common/railsSetup": "/assets/common/railsSetup-cfed4802124d3231b1c6441c95ff599b7444e257b726f77735da40bf9ce77b0b.js", "common/recaptchaSubmit": "/assets/common/recaptchaSubmit-00b44082803b95854afff50a43affb332ddebb2a0b83a68a26109aca6b46aab9.js", "common/side-menu-scroll": "/assets/common/side-menu-scroll-116ba69456d0ee789bbce8270028d1a58c82f1b3a6e9d99b44362611ddd833d2.js", "common/stripe": "/assets/common/stripe-c48b171f14b441cfc470fd2804188e400502a953dc500a81d1f0f4c93e1728d5.js", "common_controllers/auth_controller": "/assets/common_controllers/auth_controller-2ddea9a34a33af3c43af3bfe03115096e458ef609eee2456817031f375b55f48.js", "common_controllers/carousel_controller": "/assets/common_controllers/carousel_controller-a7d37f67debce15a3533d3827e50aab4128acd45bca67e63df420ab0db11915d.js", "common_controllers/collapse_controller": "/assets/common_controllers/collapse_controller-3dcbee04b1fc36d249c8c9276f073e999824690035244732f7fad43f4bfc4a84.js", "common_controllers/dev_bar_controller": "/assets/common_controllers/dev_bar_controller-887fb16bd45969b56a36edd42d408a732b6a1b4e76373251fabb68e80839e461.js", "common_controllers": "/assets/common_controllers/index-58bf1184d6faabc80d3f76de9c58175eedd057ad900d7d2680bc46a21dcc04a5.js", "common_controllers/modal_opener_controller": "/assets/common_controllers/modal_opener_controller-76dc29e7081350175d5acdd51e81b5e7afbd56f8f59bc43634ab79f106085ebe.js", "common_controllers/onboarding/features_controller": "/assets/common_controllers/onboarding/features_controller-58f75dd4c42bf73a8409dc211caa29fea5bf4a063c4fcaed64acc7ff02ee314f.js", "common_controllers/onboarding/payment_controller": "/assets/common_controllers/onboarding/payment_controller-a85dd0eb01447e48f22d8c344fd7ac5cea12dbb48f3181a5d6c263c0845c90d2.js", "common_controllers/onboarding/plan_controller": "/assets/common_controllers/onboarding/plan_controller-8b9dea50d1829d05f98c51ffa5f5262af554e2ccc4cc20fa128f21733fb4c7c4.js", "common_controllers/onboarding/telemetry_bundles_controller": "/assets/common_controllers/onboarding/telemetry_bundles_controller-a5251c236c4c6791370c0ac9421646c0a2b13745fc185682589a3b7c7dd92b6f.js", "common_controllers/onboarding/test_call_controller": "/assets/common_controllers/onboarding/test_call_controller-a09824d3d123e665bac0e1ca71970f826a3adee506a57f7295e95ac33df5100e.js", "common_controllers/pricing_controller": "/assets/common_controllers/pricing_controller-969fc984b6aca9d334d635a0c3c7111b74902fc639e74144aeb327704de83c89.js", "common_controllers/recaptcha_controller": "/assets/common_controllers/recaptcha_controller-2f82655e7318b3437aaee278e2523503bf200b01ed0c44c52aead72842128b61.js", "common_controllers/side_nav_controller": "/assets/common_controllers/side_nav_controller-f1670d9245c9eea0c10cabf3eebebc767f2014dff8ef3c4ceb4937ff1cbe06e0.js", "common_controllers/signup_controller": "/assets/common_controllers/signup_controller-b364ca84cf5a3f6d726e5d2daaa7c69d675d6eaced1a6c39e30ce5a09c6530ac.js", "common_controllers/status_page_layout_controller": "/assets/common_controllers/status_page_layout_controller-5be87013e73028cf0c53abbf4e9e2a8bbe1de3e0771be144d1e98a4a528bec5f.js", "common_controllers/timezone_controller": "/assets/common_controllers/timezone_controller-20295f334d67021c59bedd4825c9451b7ad43a7c60d6e725f945da602a0f42ea.js", "components/DatePicker": "/assets/components/DatePicker-436e54a842303f7aa138ce40f4aadd818d868002b208a8deb6d4035eea97fae3.js", "components/Modal": "/assets/components/Modal-766a80275c4b760bc5b7f328e36d077a52dc0ca79f64ce89f621fc3714a5015a.js", "components/NativeSelect": "/assets/components/NativeSelect-f3126370c0f01f32db87fc66d24be93959ecbcbf6eed7e2a790407c8bd07975d.js", "components/SideNavigation": "/assets/components/SideNavigation-af526abe8db98cc22cf7675518f35a4273ce5403df799d2990f67b8c85e2fc88.js", "components/ThemeSwitcher": "/assets/components/ThemeSwitcher-6c10857ff3cb51d1a2cb1b5e67dcb0237862e2e2660775d538c9a2aa696b27ff.js", "components/Toasts": "/assets/components/Toasts-9447093534129b4505773265eb726c5d74e8e461ad4171701de749ce1270e0a5.js", "components/UserMenu": "/assets/components/UserMenu-a929287b16464b4f65cca5c0561c868cbd2b892ff328346639ad0bc3a57d3613.js", "components/WithSpinner": "/assets/components/WithSpinner-9551c08ac773d33332213e2910656ba3d169a292b542433c4010e658544e3d6d.js", "components/admin/ArticleLink": "/assets/components/admin/ArticleLink-6548e3ec0ab7c7d7f20d10be9008e4c2a9478c8c94a29b51d20de8ef160fc8d8.js", "components/admin/ArticlesSelect": "/assets/components/admin/ArticlesSelect-3037dc73bb5c65ad133ded2306231f402d6fbfcfc9340ea792ccb6f957d7eb1c.js", "components/billing/BillableBadge": "/assets/components/billing/BillableBadge-324fcfb6af55f6bcf1307da02550c99214742543b6ec604e5da2315514c18a63.js", "components/billing/ChangePlans": "/assets/components/billing/ChangePlans-6e7f795c5c9f9c8752a7c0f1f7662daeaf56d716ab5692177fa1b56b24ac4cab.js", "components/billing/FeatureCountSlider": "/assets/components/billing/FeatureCountSlider-0ae3feb80b9b35d26f66beab8b2a1eea0e6ffc3f6f5bdd70f36daf14e339f9d4.js", "components/billing/PaymentMethodsSelect": "/assets/components/billing/PaymentMethodsSelect-302a8e448eaf713fb47d636139b3d5d16253e05a0f683d3bb6608318e8d2aafc.js", "components/billing/ProductVariables": "/assets/components/billing/ProductVariables-55783b5fdfc4e11926b3f24a7cb71c3ca371d9bb8a8b70928ff7ddad9f251450.js", "components/billing/ResponderSeatsSelector": "/assets/components/billing/ResponderSeatsSelector-817ba186dfed0791532a95c046649ef4acf8ed17e562673f114e7963aa860c36.js", "components/billing/UpcomingPlan": "/assets/components/billing/UpcomingPlan-6d193369bd135f182d4d44a7d4a7b50c9da5f4418ac07870e4b87c6024ab9282.js", "components/charts/BarChart": "/assets/components/charts/BarChart-bc4ce8200eddd395f14d2a1702e44c72210d4b734288daee4ffee2c623e65c92.js", "components/charts/theme": "/assets/components/charts/theme-91f17631e1543059e1bd76591747cc904857d5a6b3c92cd2d5fd4f97aef047de.js", "components/charts/utils/formatTooltip": "/assets/components/charts/utils/formatTooltip-31c7869ec007a414ad48ff05015b6b051216e66292847eaa2e585f407a674347.js", "components/docs/Code": "/assets/components/docs/Code-79511ae7d67e91832582328b130a1e5101633742564841d729d5420590a37453.js", "components/docs/CodeTab": "/assets/components/docs/CodeTab-744ff814f71bcbb737fa0e56d63d7e6f2c9cb70d8220b3a376e963d69ace3acc.js", "components/docs/TokenLoader": "/assets/components/docs/TokenLoader-fb07b2b2fdae0c20e0d89549f581a8adfeb53b7378021b6fa7f621023804474c.js", "components/docs/TokenNotice": "/assets/components/docs/TokenNotice-917f947c52668c272e9446aca305c2a2648c636652e4f83ac33ccde822e049fd.js", "components/docs/TokenPicker": "/assets/components/docs/TokenPicker-54e7327cdc8a42ef204b76063bfe6ede07517b8e96f69e8e36ad75e3c7a86904.js", "components/forms/AuditLogsToggle": "/assets/components/forms/AuditLogsToggle-218441a865c39560f29feea542bdea35638a757811eaaedfbff99d32b5d70198.js", "components/forms/BasicForm": "/assets/components/forms/BasicForm-61c5576c0c29b259abdf208fd812c3a0d6851e864d9aee87671c9bd865c185fe.js", "components/forms/Collapse": "/assets/components/forms/Collapse-81b332eae8af2cf0786548067b2f25e0ce8307c073e43a04b7b41d390cae5bbb.js", "components/forms/CopyOnClick": "/assets/components/forms/CopyOnClick-bb61fb00b51260d3aaf3651ca3cebb58d144fc5e0a52a09d952a47543d29d616.js", "components/forms/DotsDropdown": "/assets/components/forms/DotsDropdown-9f004c65e18a56f941167f550d24a28ba5c2e4e750be16633c65fe7e9b606423.js", "components/forms/Dropdown": "/assets/components/forms/Dropdown-f34b6de45049e8444220aa92199d58221552c245d498e7f6672a288c90ae2904.js", "components/forms/GatedToggle": "/assets/components/forms/GatedToggle-eac499fb5b20c94e1ad4611dfbb4f041e49710067a1473e6f8dd6556f864de11.js", "components/forms/HeadersJson": "/assets/components/forms/HeadersJson-3b4042d0035e077ea32f2cbb1e3e731664e7d6f89d7a6d0088a5bbc3b8a808dc.js", "components/forms/HighlightedTextarea": "/assets/components/forms/HighlightedTextarea-deb48b71df7a329d622f3b94590573bd3ff3d8c9b9f670d4f16163e17649ec18.js", "components/forms/HolidayModeForm": "/assets/components/forms/HolidayModeForm-69a117484e82dd5fcadda2177cd7b78876a2bc787f43ffd04fa012342eb5f638.js", "components/forms/IncidentSilencingForm": "/assets/components/forms/IncidentSilencingForm-730d2e9e0f4b14c3207ccf7eff428865018256abb5328d80fe9aed9df8f2bad3.js", "components/forms/LogoField": "/assets/components/forms/LogoField-ba2e7c78192d56d093ca4785f0891fc33dac0af8e01ba9744ae6694cb9fdf6a0.js", "components/forms/ModalTemplate": "/assets/components/forms/ModalTemplate-5b81c90cc376daae97f10af81ff234ef71ce1d4e94d7581e4d371dbbd4bb6202.js", "components/forms/MultiplyingInput": "/assets/components/forms/MultiplyingInput-56cdc061458582b995fb7dd7e0a74da4a7dc3a1c43ba8ebfd68721333616cff1.js", "components/forms/Select": "/assets/components/forms/Select-432a60a8168bd7622134d1a1ab7e4160c7b24aa2d28f21c02c27b904b546ca19.js", "components/forms/SelectWithSearch": "/assets/components/forms/SelectWithSearch-ed9e092ca47f10b9600a879d4f657ce2aa88fb1fee2b8254b5febe75f7264b40.js", "components/forms/SessionsForm": "/assets/components/forms/SessionsForm-c803dab2561e01cb48eda8bd0d3a8899349a19d65425aa99aeb1ec07f8782085.js", "components/forms/Slider": "/assets/components/forms/Slider-90f7010ecac763bf7233f35543741d8c859f11bf9be10b9e201ad333a078f25f.js", "components/forms/Spinner": "/assets/components/forms/Spinner-75db6d9f6d60b5eff5865ea90f129f6375b97e4c1127a6d9fd88942cc5d92259.js", "components/forms/TimezoneSelect": "/assets/components/forms/TimezoneSelect-a76a65022a969771e1ed22474ac69b7d0807a01c125b7e6c8786f418fe714d5c.js", "components/forms/Toggle": "/assets/components/forms/Toggle-3671691165989f989c10f5c4437322cb9bdcff290995748ef3e376cc5c107242.js", "components/forms/Tooltip": "/assets/components/forms/Tooltip-dcc2db1d673193afb8a7ad151c095309960a79c7f83f1c3d0f7b3a8651131bdd.js", "components": "/assets/components/index-64b4e9c85048a4acebe0d5ba7381340b40cee2b2ab4926fe765f31d6c866fb35.js", "components/notifications/Dropdown": "/assets/components/notifications/Dropdown-7d7ecf89e5cd8dcf47d1b26a1a5fff1a7b5360c271cc751032b79bf49756812c.js", "components/notifications/Item": "/assets/components/notifications/Item-343b52de1b1ee25e42e187660d689010f529cd54446505ae7e95a3ea0cf84f3d.js", "components/onboarding/PhonePrefixSelect": "/assets/components/onboarding/PhonePrefixSelect-0063c7eaba8bd54369451470c3b47d573b2a07d11b3c72df344808eab3097f83.js", "components/sessions/EmailPrompt": "/assets/components/sessions/EmailPrompt-03e0f0a98e73f7100ba92693a6a0864b341963182ddd9cbea095deb34fb787e1.js", "components/shared/DatePickerRangeSelector": "/assets/components/shared/DatePickerRangeSelector-08034d92ea3c4ea836b49f0c28975dec8571bcc6518f431e81301df06a3a256e.js", "components/shared/DateRangeSelector": "/assets/components/shared/DateRangeSelector-ac430d44c7317119204fcb38d35ea55c98d4e85d589a19b9ca2b30f3bcecb680.js", "components/stores/DocsStore": "/assets/components/stores/DocsStore-1c7507c869081858851f726d209e719b1a4d0c6c297930d41da5a472b7aa564d.js", "components/stores/FollowerStore": "/assets/components/stores/FollowerStore-5b78631dc93e290b65508617b7a63640ac5333377d1e20e95c085f9d86b9387b.js", "components/stores/MainStore": "/assets/components/stores/MainStore-fedba35ede04c4bce2be7c47969d6490d863ee416be80673288cf0e54a6f708a.js", "components/stores/ToastStore": "/assets/components/stores/ToastStore-b345053ac094eb51397158d55b71fc6d093a32087b8005bd9b0743967da3de48.js", "components/stores/UsageStore": "/assets/components/stores/UsageStore-78313fd41a5780117d579b9d5c86593e07ae981a87a8c015c417d36fa3274f79.js", "components/stores/index": "/assets/components/stores/index-790f621e33d661fa7aaaaadb06ba15928ffd964ceebe34b753720e997c7f3034.js", "components/usage/Chart": "/assets/components/usage/Chart-1fc66e48818350d300b70366d9aaca429b09689f6a9549399c1db930c690c5d9.js", "components/usage/DateRangeSelector": "/assets/components/usage/DateRangeSelector-8a093aedd6ccb36ad67886b307727d0cfb5311655e9aef5b421db4ccd22bb378.js", "components/usage/DimensionTab": "/assets/components/usage/DimensionTab-67e4ca9896636c3a88d508919ffaad7692b43b7d283f617ac6d83484bbf94390.js", "components/usage/ProductLink": "/assets/components/usage/ProductLink-6a5c70201ae98b5bf510d38c930e0b336ea0161a355e47d7d2fac57f0ac3c310.js", "components/usage/ResolutionSelector": "/assets/components/usage/ResolutionSelector-29e54e93195b8b9ef6753706f40ce43c1137c034c91a5259c244279f8a48a187.js", "components/usage/Table": "/assets/components/usage/Table-ee861fb508aca3d8cdf56c3aa10b24a1f736711c86167020238cf02ab6d4b646.js", "composables/useCollapseHeight": "/assets/composables/useCollapseHeight-17aee4ad47813c68e489fbc5ada535c42e74858948cbf17b8e70654cda85c0cf.js", "composables/useCommand": "/assets/composables/useCommand-d60c11f032654ef93461e8a4f4595edd0360ec0f6a0133d543feddcddd51ee8f.js", "composables/useHotkey": "/assets/composables/useHotkey-8e49d44a9a27667af72bc8cdb64df15b234137457afbd29278f8cf86de89cbe0.js", "composables/useTheme": "/assets/composables/useTheme-4aadc05e800ed3f5402a2eb253a109cbcae04dd915decf9f80852a0b10218db9.js", "entrypoints/admin_articles": "/assets/entrypoints/admin_articles-33e05ea74198c1755e1dac82e75f35077da3140092d5b7e1dfe453e02da93242.js", "entrypoints/application": "/assets/entrypoints/application-f0b5c4dad0df513cb8e55b3acdd8a0f2ba8c435bdb004d47a84e33ed96d081f4.js", "entrypoints/articles": "/assets/entrypoints/articles-228b5e6202a0dc83e8b7700983cf58b7cc84b06398dd3c854d3437809c6abb3d.js", "entrypoints/auth": "/assets/entrypoints/auth-b4745d7dbd024e9dc2c5617b2baf7c19205d5ef748d38418eeacd382a574240e.js", "entrypoints/betterstack_v2": "/assets/entrypoints/betterstack_v2-f0c8f8db93692df43bc1d4b430e854d39e123457a2b985ec1d8da9abc290ea82.js", "entrypoints/front": "/assets/entrypoints/front-300178d82dbd1adeb592bbd9f8b2d6421df8e5ae963041d808a67fa28e37ad79.js", "entrypoints/logtail": "/assets/entrypoints/logtail-86206ffccef010b24d771ebce8a91addc7d4391907d8dce3aea1a696dc31a15c.js", "entrypoints/mobile": "/assets/entrypoints/mobile-22d02a6569bac82bff507b79aad8172155ec4c9631ded334c8a9ba9a27ff0321.js", "entrypoints/onboarding": "/assets/entrypoints/onboarding-61bd5234ef3e2513b0a93ae8a2d127aba7450ed26f91d14aaf056f67e2e05415.js", "entrypoints/playwright": "/assets/entrypoints/playwright-2bca3f78b1face6d4bc3c50726d00fcb2823ebc7b9d64ace23b1729e6879dac4.js", "entrypoints/uptime": "/assets/entrypoints/uptime-d57f0cee58d22bac0679c1e7e06ed8afdaeb911306265cd118fe56e38a307f09.js", "front/router": "/assets/front/router-15f34318361051c9844c70c974ab777afc4e6402411fcbd694e757a877cbec40.js", "logtail_controllers": "/assets/logtail_controllers/index-1595afa1409ee5bf0188e35ef178b9ed9ec5a58fe15b68da82703e39dc78e194.js", "logtail_controllers/plans_controller": "/assets/logtail_controllers/plans_controller-e216365c38db8814403c45b7f26dab79fa9995d42f75df5fdbdc22db943b429e.js", "mobile_controllers/ButtonBridgeComponent": "/assets/mobile_controllers/ButtonBridgeComponent-30626673e61f0e3c26c3d8b6002b7fa66012d9e1b445cb4d02074bdd077861e2.js", "mobile_controllers/EventBridgeComponent": "/assets/mobile_controllers/EventBridgeComponent-313b96e5de16ed230efe1370792c3815796df581467629a23e85a78842f25cab.js", "mobile_controllers": "/assets/mobile_controllers/index-18b25ed766e85c735e5a0f22e4aede8bab9e362b6975609f0f26dac171c0063a.js", "mobile_controllers/otp_entry_controller": "/assets/mobile_controllers/otp_entry_controller-b3220a52d53f3907aebe6d65788e5dcbecd109e69a12880c9aaf3bb1d467b131.js", "routes": "/assets/routes-b42f319df6ba94e9e83bbc7cdf63e9cbcebb66b51d696ccbef7b636cb3b5228a.js", "shared/channels/appearance_subscription": "/assets/shared/channels/appearance_subscription-91167fdabc87648c3d424e872db9c0f3d009423fe043fdfce071f5319ef1b50e.js", "shared/channels/consumer": "/assets/shared/channels/consumer-54d75b5b4059931e8792cb76161d6ec1d2da116317920038eef3567eab056919.js", "shared/channels/create_follower_subscription": "/assets/shared/channels/create_follower_subscription-73d61d46010b368240046908b53bb2b1ae047b2a69313a2e1ca4b2e998d84066.js", "shared/channels/followee_subscription": "/assets/shared/channels/followee_subscription-fddf3cb73d8e828fced66aef456dec5d9b4a076fbea3a9b9af0caf58a52da8a1.js", "shared/collaboration/Appearances": "/assets/shared/collaboration/Appearances-36a2551e217b7db1563b745bdef25aea353036bd3748f5e274ba093b13bca260.js", "shared/collaboration/GhostCursors": "/assets/shared/collaboration/GhostCursors-d1819bfc45e3af8bfd0ee66639eb9b2d638e649808228941a76099a878180c3e.js", "shared/collaboration/follower/Controls": "/assets/shared/collaboration/follower/Controls-7174c73834b0413b127d83513ce202ac5e088bbf5957fc9a8d53a483f8fe4403.js", "shared/collaboration/follower/DirectFollower": "/assets/shared/collaboration/follower/DirectFollower-b02f601917eaec374b07937ab49c11357c34cf8e2b0ebc6915c84b83d17a3e44.js", "shared/collaboration/follower/Error": "/assets/shared/collaboration/follower/Error-c60522f4be41a4f7adf14b78b983ff6ca81253de314a1ef756d1161ae45fda92.js", "shared/collaboration/follower/Follower": "/assets/shared/collaboration/follower/Follower-5bbd7f6a41eeb931c5a521c8218c74a1397bbcd19816de35c729d14f7bfa2895.js", "shared/collaboration/follower/FollowerGhostCursors": "/assets/shared/collaboration/follower/FollowerGhostCursors-09b7222dde8cf5701d0faa8e311c2b5f37306732470b0be77a669fb4dead5d4d.js", "shared/collaboration/follower/LoadingScreen": "/assets/shared/collaboration/follower/LoadingScreen-b82a0ba91ca92c1183aa0aa8dc5051e93597fdd78dcc5f3878dd895b11e7f811.js", "shared/collaboration/follower/ProxyFollower": "/assets/shared/collaboration/follower/ProxyFollower-371025b83b92fb933005e7071692af402665f136f0180b5a4aec9b2911317708.js", "shared/collaboration/utils": "/assets/shared/collaboration/utils-67288c5f49092d9f154fd39c22fc4872f246af59e155f64a212d807ba40e129d.js", "shared/command_palette/CommandIndexWorker": "/assets/shared/command_palette/CommandIndexWorker-73e6e06432c6c072acbad94b5f191c7c016e735354d526b44998f2ecda4ac654.js", "shared/command_palette/CommandPalette": "/assets/shared/command_palette/CommandPalette-45d56d89e1abc0c01e621bad55f0f57e8934989ebe6cba2158919febb00a2a72.js", "shared/command_palette/CommandsManager": "/assets/shared/command_palette/CommandsManager-2f4f67654c9291f9bba5a7060071e783c852ddae39ccb180825bd1992b1bb219.js", "shared/command_palette/HotkeyManager": "/assets/shared/command_palette/HotkeyManager-cd94c551611c0f03e112789955a6ec415dce5060970b723ec7f00ee3d6f8e8e2.js", "shared/hubspot_demo_form": "/assets/shared/hubspot_demo_form-6812046f945724db91d38fc0b7a5b68ac6557fd3dcccdb2cf171bdfa1ed16bd4.js", "shared/utils/DelayedBuffer": "/assets/shared/utils/DelayedBuffer-c668422bf7cd1f0c74b85a84b43d4cd6c8ef9aaff720b9b567f9696e1cc70860.js", "shared/utils/interop": "/assets/shared/utils/interop-9f5c1743e3cd5f0de6006fa2749e139cdd0475e08002581d4fe2eaaa69bb50f7.js", "shared/utils/is-mac": "/assets/shared/utils/is-mac-93b71cfbb5b2734018e4113b6b1d7fa3532ea1f8d206e0bd20f31c0548c446f5.js", "shared/utils/script-loader": "/assets/shared/utils/script-loader-92764982164c12f674e90cd2f95a691992d89fa92621c0508f34450d80714f66.js", "uptime_controllers": "/assets/uptime_controllers/index-aec018857a67541da9db4f59349cfe9a7ca3ff1923e40b8d21d8999711a4fbbe.js", "uptime_controllers/plans_controller": "/assets/uptime_controllers/plans_controller-385a4b447247383d60bded305bfcaaaeabc0bccbb521b118028627f0152d619b.js", "utils/RangeTimestamp": "/assets/utils/RangeTimestamp-d19d11ed00082000ed6e4ba5df4e1240d27a3e654c61962d09a05a1da8670c0c.js", "utils/RelativeTimestamp": "/assets/utils/RelativeTimestamp-9855b55b1a0069362546519a1f9196ee9e16bee020bb4212099e1eedad14ee03.js", "utils/authToken": "/assets/utils/authToken-c7a1cd63fcf0ad9de31981d3f453c8076d16ca1255b6046017ed2272f3641a71.js", "utils/cardBrands": "/assets/utils/cardBrands-ea5db81e7561737ed83b636a4b6febb5db7cf6057e3dda81eba750d94eacbf01.js", "utils/chartTooltipPosition": "/assets/utils/chartTooltipPosition-527b42ecc40c85cf2336bdf7c11bdc0767d1258b5ef803df7aaeda87a78b6f4d.js", "utils/date": "/assets/utils/date-d3fcf0323a2830e49539b258684b7a73164cb6852b92d4101ce3112d5dde00ed.js", "utils/externalRoutes": "/assets/utils/externalRoutes-8202a3c23971ea5777421ceb02d30d91068394c8dc0a3050359e8df537009f7f.js", "utils/fetchJson": "/assets/utils/fetchJson-85e0da5d35050a520878375b5fba9b8c528671d2dfa2ff52cf48567bbb6a3156.js", "utils/formatters": "/assets/utils/formatters-ed707477386ff3c1040838ed28f6b17bbef0360968f058c9fac62a1a45355af9.js", "utils/highlight": "/assets/utils/highlight-458c91c22b204a7cee20df25793dc516179b84951bfe420948bf3097ac913b61.js", "utils/hotkeyLabel": "/assets/utils/hotkeyLabel-c7dc521969055b65497a498c7b57b828980e5431fdfc9632d05548d8c3b3adda.js", "utils/importmap": "/assets/utils/importmap-3fb68c776ce85b3790bb9b5753ab4e0ab2ceb0abdcc8014953cdfec2c5645cea.js", "utils/isTouchDevice": "/assets/utils/isTouchDevice-eedba28010f2ea6c3bf74f5717049a1580d0a4d78727a3cd79bdb93abd35cd56.js", "utils/miniBindVueApp": "/assets/utils/miniBindVueApp-db826ead93378a6b0fb33e4206bf12fa42895b140f7331a988030771c8370175.js", "utils/naturalLanguageTimeParser": "/assets/utils/naturalLanguageTimeParser-584f895f2ec4c4df8aa78843d8548c50c2f6df0200fed52197b79217ea8ee588.js", "utils/permissions": "/assets/utils/permissions-4327b486a3b260c0fdab95dbd2c4c4c901ff02028cb9fdd3f4476b238b40e596.js", "utils/platforms": "/assets/utils/platforms-dfbf6f3cc0a3ba42522e6d46da025f610a68024f9db9984b419f523b8ff5ad88.js", "utils/queryParams": "/assets/utils/queryParams-313f382500c03f6ae5609c10871ff0836ff1eb43cf6a68fa1addcc455fa27799.js", "utils/rebindComponents": "/assets/utils/rebindComponents-f30d606edfa41b43cad6c2a6d4656a1df83a3c73cf2fb6f8479e18203426f87d.js", "utils/timeago": "/assets/utils/timeago-2b7286c271bbc61d1258a0f65dc709e3288edd5c37e9e17f4058325a59b2517b.js", "utils/timestampToDayjs": "/assets/utils/timestampToDayjs-2b2c7c6e6b3b998b5cf23a9d9424d253ba071689d163abe9aae21df65c8a8424.js", "utils/timezone": "/assets/utils/timezone-b1171452a6a2b4d7f1a322a671886690f1647a264fb488f1e477edce29d7dd01.js", "utils/timezoneList": "/assets/utils/timezoneList-e24ecbd5932e311e8e63f2eddc66165fd12c6c0f5c99e10a0c821945d092398c.js", "vendor/aos@2.3.4": "/assets/vendor/aos@2.3.4-685eb7c655b107524a998227037e3774b68de3aae7d7d9c4778ad93f28da0134.js", "vendor/cuid@2.1.8": "/assets/vendor/cuid@2.1.8-04b3f7922ef09493e6de1674985aa9e6db1ef22b5b459ff55dfebfc7fb223403.js", "vendor/domurl@2.3.4": "/assets/vendor/domurl@2.3.4-db15c581b8052eb19b45e8d67676e0029de117dd052d52fb9b4dff92cb3c80cd.js", "vendor/floating-vue@5.2.0": "/assets/vendor/floating-vue@5.2.0-e493e91064e9956ff82c5c23defd763087421f0c97b889cf33239d802a5e8fa8.js", "vendor/frontapp-ui-bridge@2.0.0-beta1": "/assets/vendor/frontapp-ui-bridge@2.0.0-beta1-d3b766ae248a8ed4ac11ebfd6f6ac7a31294dde9cb3d9f047192921b6c1ca1c4.js", "vendor/mime-match@1.0.2": "/assets/vendor/mime-match@1.0.2-4d959bda662997b61e998d18ad41c2ae215771ae130d85a5f05ced0541000c37.js", "vendor/namespace-emitter@2.0.1": "/assets/vendor/namespace-emitter@2.0.1-b396e60bd4150b092d9eb238c73ef723dd54dfdc6c7bbe40e903efbd9659903d.js", "vendor/primevue@4.0.7": "/assets/vendor/primevue@4.0.7-292f4d15f9e736212277eaa302e66b4c72e27d267baa75f557b19221f20d4d57.js", "vendor/sentry-vue@8.13.0": "/assets/vendor/sentry-vue@8.13.0-167743aecd5b6cc9aa2899beec92879d0753ed6df2b78e8ea834dc25bbc8b375.js", "vendor/stimulus@2.0.0": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "vendor/transloadit-prettier-bytes@0.0.9": "/assets/vendor/transloadit-prettier-bytes@0.0.9-7d84b56abd9a347840cc75802bff997f4d80aa98226989b3b531586ca83de8de.js", "vendor/wildcard@1.1.2": "/assets/vendor/wildcard@1.1.2-5fe9351108ff44f2fe5e044f79bc7858778c58ba61c8cb6b5fd60e6bf5684bb1.js", "@betterstack/shared/channels/appearance_subscription": "/assets/shared/channels/appearance_subscription-91167fdabc87648c3d424e872db9c0f3d009423fe043fdfce071f5319ef1b50e.js", "@betterstack/shared/channels/consumer": "/assets/shared/channels/consumer-54d75b5b4059931e8792cb76161d6ec1d2da116317920038eef3567eab056919.js", "@betterstack/shared/channels/create_follower_subscription": "/assets/shared/channels/create_follower_subscription-73d61d46010b368240046908b53bb2b1ae047b2a69313a2e1ca4b2e998d84066.js", "@betterstack/shared/channels/followee_subscription": "/assets/shared/channels/followee_subscription-fddf3cb73d8e828fced66aef456dec5d9b4a076fbea3a9b9af0caf58a52da8a1.js", "@betterstack/shared/collaboration/Appearances": "/assets/shared/collaboration/Appearances-36a2551e217b7db1563b745bdef25aea353036bd3748f5e274ba093b13bca260.js", "@betterstack/shared/collaboration/GhostCursors": "/assets/shared/collaboration/GhostCursors-d1819bfc45e3af8bfd0ee66639eb9b2d638e649808228941a76099a878180c3e.js", "@betterstack/shared/collaboration/follower/Controls": "/assets/shared/collaboration/follower/Controls-7174c73834b0413b127d83513ce202ac5e088bbf5957fc9a8d53a483f8fe4403.js", "@betterstack/shared/collaboration/follower/DirectFollower": "/assets/shared/collaboration/follower/DirectFollower-b02f601917eaec374b07937ab49c11357c34cf8e2b0ebc6915c84b83d17a3e44.js", "@betterstack/shared/collaboration/follower/Error": "/assets/shared/collaboration/follower/Error-c60522f4be41a4f7adf14b78b983ff6ca81253de314a1ef756d1161ae45fda92.js", "@betterstack/shared/collaboration/follower/Follower": "/assets/shared/collaboration/follower/Follower-5bbd7f6a41eeb931c5a521c8218c74a1397bbcd19816de35c729d14f7bfa2895.js", "@betterstack/shared/collaboration/follower/FollowerGhostCursors": "/assets/shared/collaboration/follower/FollowerGhostCursors-09b7222dde8cf5701d0faa8e311c2b5f37306732470b0be77a669fb4dead5d4d.js", "@betterstack/shared/collaboration/follower/LoadingScreen": "/assets/shared/collaboration/follower/LoadingScreen-b82a0ba91ca92c1183aa0aa8dc5051e93597fdd78dcc5f3878dd895b11e7f811.js", "@betterstack/shared/collaboration/follower/ProxyFollower": "/assets/shared/collaboration/follower/ProxyFollower-371025b83b92fb933005e7071692af402665f136f0180b5a4aec9b2911317708.js", "@betterstack/shared/collaboration/utils": "/assets/shared/collaboration/utils-67288c5f49092d9f154fd39c22fc4872f246af59e155f64a212d807ba40e129d.js", "@betterstack/shared/command_palette/CommandIndexWorker": "/assets/shared/command_palette/CommandIndexWorker-73e6e06432c6c072acbad94b5f191c7c016e735354d526b44998f2ecda4ac654.js", "@betterstack/shared/command_palette/CommandPalette": "/assets/shared/command_palette/CommandPalette-45d56d89e1abc0c01e621bad55f0f57e8934989ebe6cba2158919febb00a2a72.js", "@betterstack/shared/command_palette/CommandsManager": "/assets/shared/command_palette/CommandsManager-2f4f67654c9291f9bba5a7060071e783c852ddae39ccb180825bd1992b1bb219.js", "@betterstack/shared/command_palette/HotkeyManager": "/assets/shared/command_palette/HotkeyManager-cd94c551611c0f03e112789955a6ec415dce5060970b723ec7f00ee3d6f8e8e2.js", "@betterstack/shared/hubspot_demo_form": "/assets/shared/hubspot_demo_form-6812046f945724db91d38fc0b7a5b68ac6557fd3dcccdb2cf171bdfa1ed16bd4.js", "@betterstack/shared/utils/DelayedBuffer": "/assets/shared/utils/DelayedBuffer-c668422bf7cd1f0c74b85a84b43d4cd6c8ef9aaff720b9b567f9696e1cc70860.js", "@betterstack/shared/utils/interop": "/assets/shared/utils/interop-9f5c1743e3cd5f0de6006fa2749e139cdd0475e08002581d4fe2eaaa69bb50f7.js", "@betterstack/shared/utils/is-mac": "/assets/shared/utils/is-mac-93b71cfbb5b2734018e4113b6b1d7fa3532ea1f8d206e0bd20f31c0548c446f5.js", "@betterstack/shared/utils/script-loader": "/assets/shared/utils/script-loader-92764982164c12f674e90cd2f95a691992d89fa92621c0508f34450d80714f66.js", "vue": "https://cdnjs.betterstack.com/vue@3.4.31/dist/vue.esm-browser.prod.js", "@vue/devtools-api": "https://cdnjs.betterstack.com/@vue/devtools-api@6.6.3/lib/esm/index.js", "vue-demi": "https://cdnjs.betterstack.com/vue-demi@0.14.8/lib/index.mjs", "pinia": "https://cdnjs.betterstack.com/pinia@2.1.7/dist/pinia.esm-browser.js", "vue-turbolinks": "https://cdnjs.betterstack.com/vue-turbolinks@2.2.2/index.js", "@sentry/vue": "/assets/vendor/sentry-vue@8.13.0-167743aecd5b6cc9aa2899beec92879d0753ed6df2b78e8ea834dc25bbc8b375.js", "@headlessui/vue": "https://cdnjs.betterstack.com/@headlessui/vue@1.7.4/dist/headlessui.esm.js", "primevue": "/assets/vendor/primevue@4.0.7-292f4d15f9e736212277eaa302e66b4c72e27d267baa75f557b19221f20d4d57.js", "vueform-multiselect": "https://cdnjs.betterstack.com/@vueform/multiselect@2.6.10/dist/multiselect.js", "vueform-slider": "https://cdnjs.betterstack.com/@vueform/slider@2.1.10/dist/slider.js", "@hotwired/turbo-rails": "https://cdnjs.betterstack.com/@hotwired/turbo-rails@8.0.4/app/assets/javascripts/turbo.js", "@hotwired/hotwire-native-bridge": "https://cdnjs.betterstack.com/@hotwired/hotwire-native-bridge@1.0.0/dist/hotwire-native-bridge.js", "@rails/actioncable": "https://cdnjs.betterstack.com/@rails/actioncable@7.0.4/app/assets/javascripts/actioncable.esm.js", "@rails/activestorage": "https://cdnjs.betterstack.com/@rails/activestorage@6.0.0/app/assets/javascripts/activestorage.js", "js-cookie": "https://cdnjs.betterstack.com/js-cookie@3.0.1/dist/js.cookie.min.mjs", "lazysizes": "https://cdnjs.betterstack.com/lazysizes@5.3.2/lazysizes.min.js", "posthog-js": "https://cdnjs.betterstack.com/posthog-js@1.64.0/dist/es.js", "el-transition": "https://cdnjs.betterstack.com/el-transition@0.0.7/index.js", "dayjs": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/index.js", "dayjs/": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/", "dayjs/plugin/quarterOfYear.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/quarterOfYear/index.js", "dayjs/plugin/timezone.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/timezone/index.js", "dayjs/plugin/utc.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/utc/index.js", "underscore/": "https://cdnjs.betterstack.com/underscore@1.13.6/modules/", "nanoevents": "https://cdnjs.betterstack.com/nanoevents@7.0.1/index.js", "decimal": "https://cdnjs.betterstack.com/decimal.js@10.4.3/decimal.mjs", "lodash/": "https://cdnjs.betterstack.com/lodash-es@4.17.21/", "lodash.throttle": "https://cdnjs.betterstack.com/lodash-es@4.17.21/throttle", "aos": "/assets/vendor/aos@2.3.4-685eb7c655b107524a998227037e3774b68de3aae7d7d9c4778ad93f28da0134.js", "stimulus": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "@hotwired/stimulus": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "domurl": "/assets/vendor/domurl@2.3.4-db15c581b8052eb19b45e8d67676e0029de117dd052d52fb9b4dff92cb3c80cd.js", "@floating-ui/dom": "https://cdnjs.betterstack.com/@floating-ui/dom@1.4.4/dist/floating-ui.dom.browser.min.mjs", "@floating-ui/core": "https://cdnjs.betterstack.com/@floating-ui/core@1.3.1/dist/floating-ui.core.browser.min.mjs", "floating-vue": "/assets/vendor/floating-vue@5.2.0-e493e91064e9956ff82c5c23defd763087421f0c97b889cf33239d802a5e8fa8.js", "echarts": "https://cdnjs.betterstack.com/echarts@5.4.0/dist/echarts.esm.min.js", "echarts/core": "https://cdnjs.betterstack.com/echarts@5.4.0/dist/echarts.esm.min.js", "vue-echarts": "https://cdnjs.betterstack.com/vue-echarts@6.6.1/dist/index.esm.min.js", "resize-detector": "https://cdnjs.betterstack.com/resize-detector@0.3.0/esm/index.js", "@uppy/aws-s3": "https://cdnjs.betterstack.com/@uppy/aws-s3@3.2.0/lib/index.js", "@uppy/aws-s3-multipart": "https://cdnjs.betterstack.com/@uppy/aws-s3-multipart@3.4.0/lib/index.js", "@uppy/core": "https://cdnjs.betterstack.com/@uppy/core@3.2.1/lib/index.js", "@uppy/core/": "https://cdnjs.betterstack.com/@uppy/core@3.2.1/", "@uppy/companion-client": "https://cdnjs.betterstack.com/@uppy/companion-client@3.1.3/lib/index.js", "@uppy/utils/": "https://cdnjs.betterstack.com/@uppy/utils@5.4.0/", "@uppy/store-default": "https://cdnjs.betterstack.com/@uppy/store-default@3.0.3/lib/index.js", "mime-match": "/assets/vendor/mime-match@1.0.2-4d959bda662997b61e998d18ad41c2ae215771ae130d85a5f05ced0541000c37.js", "namespace-emitter": "/assets/vendor/namespace-emitter@2.0.1-b396e60bd4150b092d9eb238c73ef723dd54dfdc6c7bbe40e903efbd9659903d.js", "nanoid/non-secure": "https://cdnjs.betterstack.com/nanoid@4.0.1/non-secure/index.js", "preact": "https://cdnjs.betterstack.com/preact@10.11.0/dist/preact.module.js", "@transloadit/prettier-bytes": "/assets/vendor/transloadit-prettier-bytes@0.0.9-7d84b56abd9a347840cc75802bff997f4d80aa98226989b3b531586ca83de8de.js", "wildcard": "/assets/vendor/wildcard@1.1.2-5fe9351108ff44f2fe5e044f79bc7858778c58ba61c8cb6b5fd60e6bf5684bb1.js", "@frontapp/plugin-sdk": "https://cdnjs.betterstack.com/@frontapp/plugin-sdk@1.0.1/dist/index.es.js", "@frontapp/ui-bridge": "/assets/vendor/frontapp-ui-bridge@2.0.0-beta1-d3b766ae248a8ed4ac11ebfd6f6ac7a31294dde9cb3d9f047192921b6c1ca1c4.js", "cuid": "/assets/vendor/cuid@2.1.8-04b3f7922ef09493e6de1674985aa9e6db1ef22b5b459ff55dfebfc7fb223403.js", "rxjs": "https://cdnjs.betterstack.com/rxjs@^7.4.0/dist/esm/index.js", "rxjs/": "https://cdnjs.betterstack.com/rxjs@^7.4.0/dist/esm/", "tslib": "https://cdnjs.betterstack.com/tslib@2.3.1/tslib.es6.js", "virtua": "https://cdnjs.betterstack.com/virtua@0.39.0/lib/vue/index.mjs", "flexsearch": "https://cdnjs.betterstack.com/flexsearch@0.7.43/dist/flexsearch.light.module.min.js" } }</script> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue@3.4.31/dist/vue.esm-browser.prod.js" nonce="ab06867eab962ecea55fb2313105e092"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/@vue/devtools-api@6.6.3/lib/esm/index.js" nonce="ab06867eab962ecea55fb2313105e092"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue-demi@0.14.8/lib/index.mjs" nonce="ab06867eab962ecea55fb2313105e092"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/pinia@2.1.7/dist/pinia.esm-browser.js" nonce="ab06867eab962ecea55fb2313105e092"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue-turbolinks@2.2.2/index.js" nonce="ab06867eab962ecea55fb2313105e092"> <script type="esms-options" nonce="ab06867eab962ecea55fb2313105e092">{"nonce":"ab06867eab962ecea55fb2313105e092"}</script> <script src="/assets/es-module-shims.min-d89e73202ec09dede55fb74115af9c5f9f2bb965433de1c2446e1faa6dac2470.js" defer="defer" data-turbo-track="reload" nonce="ab06867eab962ecea55fb2313105e092"></script> <script type="module" nonce="ab06867eab962ecea55fb2313105e092"> //<![CDATA[ import * as Sentry from '@sentry/vue' Sentry.init({ dsn: "https://5d12720845819aced5e1d8d5ed797725@o1399417.ingest.sentry.io/4507566687649792", // integrations: [Sentry.browserProfilingIntegration(), Sentry.browserTracingIntegration()], ignoreErrors: ["ignore:service_returned_401", "No error message"], environment: "production", release: window.cfg.app_version, // tracesSampleRate: 0.1, // profilesSampleRate: 0.1, denyUrls: [/chat-assets\.frontapp\.com/i], app: [], }); Sentry.setUser({ email: "" }); window.Sentry = Sentry; //]]> </script> <script type="module" nonce="ab06867eab962ecea55fb2313105e092">import "entrypoints/articles"</script> <script type="application/javascript" nonce="ab06867eab962ecea55fb2313105e092"> //<![CDATA[ if (!HTMLScriptElement?.supports?.('importmap')) { alert('Your browser is not supported. Please upgrade to a newer version of Chrome, Firefox, Safari or other modern browser.') } //]]> </script> <script type="module" nonce="ab06867eab962ecea55fb2313105e092">import "channels"</script> <link rel="stylesheet" href="/assets/articles-baef9cc2d3cd7cbcabe2dc4cde5d3e2ee98b055c4a90a30411be3d0488785088.css" media="all" data-turbo-track="reload" /> <style> @supports (-webkit-hyphens:none) { .book, .book:hover { filter: unset; } } </style> <script type="application/ld+json" nonce="ab06867eab962ecea55fb2313105e092"> //<![CDATA[ [ { "@context": "https://schema.org", "@type": "Article", "headline": "How To Start Logging With NLog", "author": "Jan Tovarys and Andrej Hoos", "image": "/og-image/how-to-start-logging-with-nlog.png", "genre": "", "keywords": "", "publisher": { "@type": "Organization", "name": "Better Stack", "logo": { "@type": "ImageObject", "url": "https://betterstack.com/assets/logo-e81f7f79f9298e052fa7d3111a4311cd18f731f3fdf99859cb63e70002365bb3.png" } }, "url": "https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://google.com/article" }, "datePublished": "2022-01-11T15:28:40Z", "dateCreated": "2022-01-11T15:28:40Z", "dateModified": "2024-01-09T16:21:41Z", "description": "Learn how to start logging with NLog and go from basics to best practices in no time." } ] //]]> </script><link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff' rel='preload'> <style> @font-face { font-family: "Roobert"; font-style: normal; font-weight: 400; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Regular.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Regular.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 500; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Medium.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Medium.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 600; font-display: swap; src: url("/static/fonts/Roobert/Roobert-SemiBold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-SemiBold.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 700; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Bold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Bold.woff") format("woff"); } </style> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Inter/Inter-latin.woff2' rel='preload'> <style> @font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 700; font-display: swap; src: url("/static/fonts/Inter/Inter-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } </style> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <style> @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Regular'), local('HelveticaNowText-Regular'), url('/static/fonts/Helvetica/HelveticaNowText-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Medium'), local('HelveticaNowText-Medium'), url('/static/fonts/Helvetica/HelveticaNowText-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Bold'), local('HelveticaNowText-Bold'), url('/static/fonts/Helvetica/HelveticaNowText-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Medium'), local('HelveticaNowDisplay-Medium'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Bold'), local('HelveticaNowDisplay-Bold'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } </style> <meta content='Guides' name='meta-docsearch-hierarchy1'> <meta content='Logging' name='meta-docsearch-hierarchy2'> <meta content='.NET' name='meta-docsearch-hierarchy3'> <meta content='How To Start Logging With NLog' name='meta-docsearch-hierarchy4'> <meta content='Logging with NLog' name='meta-docsearch-name'> <meta content='How To Start Logging With NLog' name='meta-docsearch-title'> <meta content='Learn how to start logging with NLog and go from basics to best practices in no time.' name='meta-docsearch-description'> <meta content='Learn how to start logging with NLog and go from basics to best practices in no time.' name='meta-docsearch-og_description'> <meta content='Jan Tovarys,Andrej Hoos' name='meta-docsearch-authors'> </head> <body> <script type="application/javascript" nonce="ab06867eab962ecea55fb2313105e092"> //<![CDATA[ window.cfg = {"base_host":"betterstack.com","base_url":"https://betterstack.com","better_stack_url":"https://betterstack.com","uptime_url":"https://uptime.betterstack.com","logtail_url":"https://telemetry.betterstack.com","posthog":{"api_host":"https://t.betterstack.com","api_key":"phc_Tbfg4EiRsr5iefFoth2Y1Hi3sttTeLQ5RV5TLg4hL1W","related_domains":["betteruptime.com","logtail.com"]},"permissions":{},"controller":"articles","action":"show","app":"betterstack","theme":"system","organization_id":null,"team_id":null,"environment":"production","browser_timezone":null,"signed_in":false,"team_switcher_items":[]}; //]]> </script> <div class='main articles bg-[#0B0C14]'> <header class='z-40 top-0 left-0 right-0 flex justify-center helvetica bg-[#0B0C14]/80 relative before:absolute before:-z-10 before:inset-0 before:backdrop-blur-2xl' id='navbar'> <nav class='grow flex justify-between border-b mx-5 max-w-[1110px] h-[52px] text-[13px] leading-[100%] text-[#C9D3EE] border-[#727DA1]/15'> <div class='flex items-stretch gap-3'> <a aria-label='Go to homepage' class='flex items-center py-3' href='/'> <svg width='154' height='21' class='scale-[65%] -mx-6' alt='Better Stack' style='--currentColor: currentColor;'><use href='/assets/v2/better-stack-logo-0dd586683a61184ea953948d207470eeec73c76d81d57cd8af24bf56b36a90db.svg#root' /></svg> </a> <div class='hidden md:flex items-stretch gap-4'> <button aria-controls='platform-menu' aria-haspopup='menu' class='pl-3 py-3 pr-6 -mr-3 group relative flex items-center'> <div class='transition group-hover:text-white'>Platform</div> <span class='absolute right-2 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='platform-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex w-[650px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <div class='flex-1 md:px-2 py-3 flex flex-col gap-1 border-b md:border-b-0 md:border-r relative border-[#1F2433]/40'> <div class='absolute -top-7 bottom-full left-0 right-0'></div> <a class='-my-1 p-1 flex items-center gap-3 group/uptime ml-[6px]' href='/uptime'> <svg width='69' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/uptime-logo-fcc6a01850aa0409e3743c6b70051bfc042504854c76a833ef52512d92dccc16.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/uptime:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/uptime:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/uptime"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-2px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/globe-alt-5353caa43f8b313373d83572e4ad34e7a563836c16aa6096a14a264330713862.svg#root' /></svg></span> <div> <div class='font-medium'>Uptime monitoring</div> <div class='mt-1 text-xs text-neutral-200'>Get 10 monitors, and a status page totally free.</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-management"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/calendar-6357844552d3ab90ba30b8f0b220de1523ff3aeee8c314a7805eecc7c7393754.svg#root' /></svg></span> <div> <div class='font-medium'>Incident management &amp; on-call</div> <div class='mt-1 text-xs text-neutral-200'>Get a call when your website goes down</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/status-page"><span class='mr-1 text-[#7C87F7]'><svg width='20' height='20' alt='' class='relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/page-e138419398f9cc3e22fdf0693bc55a06d3cc6daec37069e878be827b24d07521.svg#root' /></svg></span> <div> <div class='font-medium'>Status page</div> <div class='mt-1 text-xs text-neutral-200'>Communicate downtime &amp; build trust</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-silencing"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bell-alert-bae43eae97d5f8f065ac7cfc69ecfb8325b06acf5014e922db6f5ed2b0da780c.svg#root' /></svg></span> <div> <div class='font-medium'>Incident silencing</div> <div class='mt-1 text-xs text-neutral-200'>Reduce alert noise &amp; prevent alert fatigue</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/slack-incident-management"><div class='mr-1 w-[18px] h-[18px] mt-[2px] text-brand-primary-100'><svg alt='' class='w-full h-full relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/slack-77d755b1a6198a50134d9500924a07b2a55cfb06d5d704776cddd5d419701977.svg#root' /></svg></div> <div> <div class='font-medium'>Slack-based incident management</div> <div class='mt-1 text-xs text-neutral-200'>Resolve incidents directly in Slack</div> </div> </a></div> <div class='flex-1 mt-2 md:mt-0 md:px-2 py-3 flex flex-col gap-1'> <a class='ml-1 -my-1 p-1 flex items-center gap-3 group/logtail' href='/telemetry'> <svg width='227' height='48' alt='' class='w-[95px] h-5' style='--currentColor: currentColor;'><use href='/assets/v2/telemetry-logo-9698cd9133dcc1454659c661f4632fb8d4453b2e62bd2f98a248c69a3767fb8a.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/logtail:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/logtail:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/telemetry"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/code-insert-b8f283aedd6b241eb85334d4566ca3fbe15a8fc15c4ecf8638bc97f7da00e854.svg#root' /></svg></span> <div> <div class='font-medium'>Log management</div> <div class='mt-1 text-xs text-neutral-200'>Collect insights across your stack</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/infrastructure-monitoring"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/server-stack-d9821d67c85b098d180212edfdab2f04b882ab293f52834aa72d0fd2fbe06b0d.svg#root' /></svg></span> <div> <div class='font-medium'>Infrastructure monitoring</div> <div class='mt-1 text-xs text-neutral-200'>OpenTelemetry-native infrastructure monitoring</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/dashboards"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/flipchart-2cc00e4a7089a6b436dc7686bb14f3cac3ebb97a628e5824ead4ee4b38f179b3.svg#root' /></svg></span> <div> <div class='font-medium'>Observability dashboards</div> <div class='mt-1 text-xs text-neutral-200'>Analyze metrics across your services</div> </div> </a></div> </div> </div> </button> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='https://betterstack.com/docs/uptime'> <span>Documentation</span> </a> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='/pricing'> <span>Pricing</span> </a> <form action='https://betterstack.com/community' class='m-0 flex items-stretch'> <button aria-controls='community-menu' aria-haspopup='menu' class='p-3 group relative flex items-center' type='submit'> <div class='transition group-hover:text-white'>Community</div> <span class='absolute -right-1 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='community-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex flex-col gap-1 w-[174px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%] md:hidden" href="https://betterstack.com/community"><span class='text-neutral-200'><svg class='mx-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/users-26c9af687d35d046de38f868bdfb06189d53f15b4a1c1593671ce07998a8ccb0.svg#root' /></svg></span> Community home </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/guides"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/guides-3c7383ba1af5330b1c7df20232fb7c2df8ca63a0fad8de36a12930eefd4d23f5.svg#root' /></svg></span> Guides </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/questions"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/questions-f8bf552415b1338196322c800af25f02649065803debc56e35284dc8817f4f62.svg#root' /></svg></span> Questions </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/comparisons"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/comparisons-fb6863a2e083bb6469dc4f30df33fda11ca8ddb21e20b705fee14bbd01f921e1.svg#root' /></svg></span> Comparisons </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/blog"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/blog-b6395fefdf95ecf0d620f4edb28e3684d1bf00f1f7ed3450247f3822d54413e5.svg#root' /></svg></span> Blog </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" target="_blank" href="https://newsletter.betterstack.com/"><span class='text-neutral-200'><svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/newspaper-c03849807579231cbe11aab7bb71b8810c2ad486782add5cc373e187b9fd211a.svg#root' /></svg></span> Newsletter </a> </div> </div> </button> </form> <button aria-controls='company-menu' aria-haspopup='menu' class='p-3 group relative flex items-center'> <div class='transition group-hover:text-white'>Company</div> <span class='absolute -right-1 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='company-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex flex-col gap-1 w-[190px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/ship-fac80f771cb6bf9b83f75566358b7f7f55096ead16224af4a5017c66d7c95d2d.svg#root' /></svg></span> Work at Better Stack </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers/engineering"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/code-962cf453e652fb895c84780aeeef1b4b86dfe3746a37745c329574151171174e.svg#root' /></svg></span> Engineering </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/security"><span class='text-neutral-200'><svg width='20' height='20' alt='' class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/shield-check-3c099ada976d7267d4d10e6a1989b201b1a2bc19e24d8d856d2267b25b355423.svg#root' /></svg></span> Security </a> </div> </div> </button> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='/enterprise'> <span>Enterprise</span> </a> </div> </div> <div class='flex items-center sm:gap-2 whitespace-nowrap -mr-3 md:mr-0'> <a class="p-2 transition hover:text-white" data-turbo="false" href="/users/sign-in">Sign in</a> <a class="px-2 h-[27px] flex items-center rounded bg-button-gradient text-white font-medium" data-turbo="false" href="/users/sign-up">Sign up</a> <button aria-label='Open menu' class='p-2 group relative md:hidden text-neutral-300' id='open-menu'> <svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bars-3-351934c6c1a4098059288510d0dae400e4c50af0fb9ab0861217099dae52d243.svg#root' /></svg> </button> <button aria-label='Close menu' class='hidden p-2 group relative md:hidden text-neutral-300' id='close-menu'> <svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/x-mark-79d01b614be655fe3c9476bfc5894abf50a46176906bb008c2d4837615e51312.svg#root' /></svg> </button> </div> <div class='hidden md:hidden p-5 fixed z-40 left-0 right-0 backdrop-blur-2xl top-[52px] bg-[#181926]/80 text-[#C9D3EE]' id='mobile-menu'> <div class='js-menu-section flex flex-col gap-1' data-section='root'> <button class='p-3 group relative flex items-center' data-section='platform'> Platform <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <a class="p-3" href="https://betterstack.com/docs/">Documentation</a> <a class="p-3" href="/pricing">Pricing</a> <button class='p-3 group relative flex items-center' data-section='community'> Community <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <button class='p-3 group relative flex items-center' data-section='company'> Company <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <a class="p-3" href="/enterprise">Enterprise</a> </div> <div class='js-menu-section hidden' data-section='platform'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <div class='flex-1 md:px-2 py-3 flex flex-col gap-1 border-b md:border-b-0 md:border-r relative border-[#1F2433]/40'> <div class='absolute -top-7 bottom-full left-0 right-0'></div> <a class='-my-1 p-1 flex items-center gap-3 group/uptime ml-[6px]' href='/uptime'> <svg width='69' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/uptime-logo-fcc6a01850aa0409e3743c6b70051bfc042504854c76a833ef52512d92dccc16.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/uptime:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/uptime:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/uptime"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-2px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/globe-alt-5353caa43f8b313373d83572e4ad34e7a563836c16aa6096a14a264330713862.svg#root' /></svg></span> <div> <div class='font-medium'>Uptime monitoring</div> <div class='mt-1 text-xs text-neutral-200'>Get 10 monitors, and a status page totally free.</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-management"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/calendar-6357844552d3ab90ba30b8f0b220de1523ff3aeee8c314a7805eecc7c7393754.svg#root' /></svg></span> <div> <div class='font-medium'>Incident management &amp; on-call</div> <div class='mt-1 text-xs text-neutral-200'>Get a call when your website goes down</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/status-page"><span class='mr-1 text-[#7C87F7]'><svg width='20' height='20' alt='' class='relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/page-e138419398f9cc3e22fdf0693bc55a06d3cc6daec37069e878be827b24d07521.svg#root' /></svg></span> <div> <div class='font-medium'>Status page</div> <div class='mt-1 text-xs text-neutral-200'>Communicate downtime &amp; build trust</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-silencing"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bell-alert-bae43eae97d5f8f065ac7cfc69ecfb8325b06acf5014e922db6f5ed2b0da780c.svg#root' /></svg></span> <div> <div class='font-medium'>Incident silencing</div> <div class='mt-1 text-xs text-neutral-200'>Reduce alert noise &amp; prevent alert fatigue</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/slack-incident-management"><div class='mr-1 w-[18px] h-[18px] mt-[2px] text-brand-primary-100'><svg alt='' class='w-full h-full relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/slack-77d755b1a6198a50134d9500924a07b2a55cfb06d5d704776cddd5d419701977.svg#root' /></svg></div> <div> <div class='font-medium'>Slack-based incident management</div> <div class='mt-1 text-xs text-neutral-200'>Resolve incidents directly in Slack</div> </div> </a></div> <div class='flex-1 mt-2 md:mt-0 md:px-2 py-3 flex flex-col gap-1'> <a class='ml-1 -my-1 p-1 flex items-center gap-3 group/logtail' href='/telemetry'> <svg width='227' height='48' alt='' class='w-[95px] h-5' style='--currentColor: currentColor;'><use href='/assets/v2/telemetry-logo-9698cd9133dcc1454659c661f4632fb8d4453b2e62bd2f98a248c69a3767fb8a.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/logtail:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/logtail:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/telemetry"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/code-insert-b8f283aedd6b241eb85334d4566ca3fbe15a8fc15c4ecf8638bc97f7da00e854.svg#root' /></svg></span> <div> <div class='font-medium'>Log management</div> <div class='mt-1 text-xs text-neutral-200'>Collect insights across your stack</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/infrastructure-monitoring"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/server-stack-d9821d67c85b098d180212edfdab2f04b882ab293f52834aa72d0fd2fbe06b0d.svg#root' /></svg></span> <div> <div class='font-medium'>Infrastructure monitoring</div> <div class='mt-1 text-xs text-neutral-200'>OpenTelemetry-native infrastructure monitoring</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/dashboards"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/flipchart-2cc00e4a7089a6b436dc7686bb14f3cac3ebb97a628e5824ead4ee4b38f179b3.svg#root' /></svg></span> <div> <div class='font-medium'>Observability dashboards</div> <div class='mt-1 text-xs text-neutral-200'>Analyze metrics across your services</div> </div> </a></div> </div> <div class='js-menu-section hidden flex flex-col gap-1' data-section='community'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%] md:hidden" href="https://betterstack.com/community"><span class='text-neutral-200'><svg class='mx-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/users-26c9af687d35d046de38f868bdfb06189d53f15b4a1c1593671ce07998a8ccb0.svg#root' /></svg></span> Community home </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/guides"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/guides-3c7383ba1af5330b1c7df20232fb7c2df8ca63a0fad8de36a12930eefd4d23f5.svg#root' /></svg></span> Guides </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/questions"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/questions-f8bf552415b1338196322c800af25f02649065803debc56e35284dc8817f4f62.svg#root' /></svg></span> Questions </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/comparisons"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/comparisons-fb6863a2e083bb6469dc4f30df33fda11ca8ddb21e20b705fee14bbd01f921e1.svg#root' /></svg></span> Comparisons </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/blog"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/blog-b6395fefdf95ecf0d620f4edb28e3684d1bf00f1f7ed3450247f3822d54413e5.svg#root' /></svg></span> Blog </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" target="_blank" href="https://newsletter.betterstack.com/"><span class='text-neutral-200'><svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/newspaper-c03849807579231cbe11aab7bb71b8810c2ad486782add5cc373e187b9fd211a.svg#root' /></svg></span> Newsletter </a> </div> <div class='js-menu-section hidden pb-5 flex flex-col gap-1' data-section='company'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/ship-fac80f771cb6bf9b83f75566358b7f7f55096ead16224af4a5017c66d7c95d2d.svg#root' /></svg></span> Work at Better Stack </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers/engineering"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/code-962cf453e652fb895c84780aeeef1b4b86dfe3746a37745c329574151171174e.svg#root' /></svg></span> Engineering </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/security"><span class='text-neutral-200'><svg width='20' height='20' alt='' class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/shield-check-3c099ada976d7267d4d10e6a1989b201b1a2bc19e24d8d856d2267b25b355423.svg#root' /></svg></span> Security </a> </div> </div> </nav> </header> <header class='dark sticky top-0 z-30 flex justify-center leading-none w-full backdrop-blur-2xl bg-[#0B0C14]/80 text-[13px]'> <div class='mx-2 sm:mx-5 flex grow overflow-x-scroll no-scrollbars relative max-w-[1110px]'> <nav class='grow flex items-center border-b h-[49px] border-[#727DA1]/15'> <a class='block mr-5 ml-2 p-2 hover:text-white mt-[-2px]' href='/community/?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> Community </a> <div class='grow flex items-stretch gap-5 md:justify-between'> <ul class='flex items-center gap-5 whitespace-nowrap'> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2 text-white rounded bg-[#98A4F714]' href='/community/guides/?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> Guides </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/questions/?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> Questions </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/comparisons/?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> Comparisons </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/blog/?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> Blog </a> </li> </ul> <a class='flex items-center hover:text-white md:hidden' href='https://betterstack.com/docs/'>Docs</a> <div class='sticky md:absolute z-10 right-2 md:right-0 top-0 bottom-0 flex items-center gap-5 whitespace-nowrap'> <a class='hover:text-white hidden md:block' href='https://betterstack.com/docs/'>Documentation</a> <div id='docsearch-container'></div> <script src='https://cdnjs.betterstack.com/@docsearch/js@3.5.2/dist/umd/index.js'></script> <script nonce="ab06867eab962ecea55fb2313105e092"> //<![CDATA[ function loadDocsearch() { if (!window.docsearch) { setTimeout(loadDocsearch, 50); return; } window.docsearch({ container: '#docsearch-container', appId: '4N04E5JBP3', indexName: 'betterstack22', apiKey: '1acd2b32f9173069cd6467c9d186e21f', maxResultsPerGroup: 20, searchParameters: { hitsPerPage: 20, }, }); // This hack prevents scrolling after closing the modal in Safari. // https://github.com/algolia/docsearch/issues/1260 document.getElementsByClassName('DocSearch DocSearch-Button')[0]?.addEventListener('click', function (event) { document.querySelectorAll('.js-docsearch-anchor').forEach((element) => { element.parentNode.removeChild(element); }); const input = document.createElement('input') input.setAttribute('type', 'text') const div = document.createElement('div'); div.appendChild(input); div.classList.add('fixed', 'js-docsearch-anchor'); document.body.appendChild(div); }); // Without this CMD+K would open one modal per visited page with the search. // Docsearch does not support 'destroy', so we need to hack it. document.addEventListener('keydown', function (event) { if (event.key === 'k' && event.metaKey) { event.stopPropagation(); document.getElementsByClassName('DocSearch DocSearch-Button')[0]?.click(); } }); } loadDocsearch(); //]]> </script> </div> </div> </nav> </div> <div class='absolute pointer-events-none top-0 bottom-0 right-0 bg-gradient-to-l md:hidden w-28 from-[#0B0C14] via-[#0B0C14]'></div> </header> <div class='bg-white'><main> <div class='dark bg-primary-hero'> <div class='mx-auto pt-4 pb-8 px-7 max-w-[1130px]'> <a class='text-base text-[#C9D3EE]' href='/community/guides/logging/'> <svg class='inline mr-2 -mt-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/arrow-left-ed700dfed9514ccfb810fa7a4d596df346b95f0b52f9f415dc3fd98fdde23853.svg#root' /></svg> Back to Logging guides </a> <div class='pt-10 md:pt-16 lg:pt-20'> <h1 class='font-helveticaDisplay font-bold text-center text-white overflow-hidden text-ellipsis mx-auto text-[36px] md:text-[48px] lg:text-[54px] leading-[120%] max-w-[640px]'> How To Start Logging With NLog </h1> <div class='mt-4 flex justify-center text-base flex-wrap'> <a class="px-[10px] py-[2px] mr-2 mt-2 rounded-lg bg-white/[0.04] hover:bg-white/[0.05] border border-white/[0.05] text-white whitespace-nowrap" href="/tag/logging?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog">Logging</a> <a class="px-[10px] py-[2px] mr-2 mt-2 rounded-lg bg-white/[0.04] hover:bg-white/[0.05] border border-white/[0.05] text-white whitespace-nowrap" href="/tag/.net?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog">.NET</a> <a class="px-[10px] py-[2px] mr-2 mt-2 rounded-lg bg-white/[0.04] hover:bg-white/[0.05] border border-white/[0.05] text-white whitespace-nowrap" href="/tag/nlog?utm_content&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog">NLog</a> </div> <div class='mt-10 md:mt-16 mt-20 text-center'> <div class='text-white'>Jenda Tovarys</div> <div class='mt-1 uppercase whitespace-nowrap text-xs font-medium text-neutral-300 tracking-[1.56px]'> Updated on January 9, 2024 </div> </div> </div> </div> </div> <div class='container mx-auto py-8 lg:py-16 max-w-[1130px]'> <div class='lg:flex' data-controller='toc'> <div class='grow xl:flex'> <div class='sticky hidden xl:block mr-12 shrink-0 w-[190px]' data-toc-target='toc'> <div class='text-base text-neutral-300 sticky scroll-smooth overflow-y-auto pretty-scrollbars max-h-screen top-[100px] pb-40'> <h6 class='text-neutral-800 font-bold'>Contents</h6> <div class='table-of-contents flat'> <ul> <li> <a href="#prerequisites">Prerequisites</a> </li> <li> <a href="#step-1-creating-a-project">Step 1 — Creating a Project</a> </li> <li> <a href="#step-2-installing-dependencies">Step 2 — Installing Dependencies</a> </li> <li> <a href="#step-3-creating-a-logger">Step 3 — Creating a Logger</a> </li> <li> <a href="#step-4-configuring-the-logger">Step 4 — Configuring the Logger</a> </li> <li> <a href="#step-5-creating-extra-classes">Step 5 — Creating Extra Classes</a> </li> <li> <a href="#step-6-logging">Step 6 — Logging</a> </li> <li> <a href="#conclusion">Conclusion</a> </li> </ul> </div> </div> </div> <div class='grow shrink-0 prose max-w-[616px]' data-controller='body' data-toc-target='content'> <p>NLog is a logging framework for .NET. It has rich log routing and management capabilities and greatly helps you to produce and manage logs. NLog supports structured logs, multiple logging targets, and everything a modern logging framework should support. In the long list of the NLog&#39;s features, you can find:</p> <ul> <li><a rel="" target="_blank" class="" href="https://github.com/nlog/nlog/wiki/How-to-write-a-custom-layout-renderer">Custom formatting layout<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a></li> <li><a rel="" target="_blank" class="" href="https://github.com/nlog/nlog/wiki/How-to-use-structured-logging">Support of structured logging<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, that allows them to be treated as data sets rather than text</li> <li><a rel="" target="_blank" class="" href="https://github.com/NLog/NLog/wiki/AsyncWrapper-target">Compatibility<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a> with asynchronous applications and systems.</li> <li>Multiple logging targets, such as <a rel="" target="_blank" class="" href="https://github.com/nlog/nlog/wiki/File-target">files<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, <a rel="" target="_blank" class="" href="https://github.com/nlog/nlog/wiki/Console-target">console<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, <a rel="" target="_blank" class="" href="https://github.com/serilog/serilog-sinks-console">console<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, <a rel="" target="_blank" class="" href="https://github.com/NLog/NLog/wiki/Mail-target">email<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, and <a rel="" target="_blank" class="" href="https://nlog-project.org/config/?tab=targets">many other outputs<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>.</li> <li><a rel="" target="_blank" class="" href="https://messagetemplates.org/">Message templates<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>, that helps you to serialize objects using the <code class="prettyprint">@</code> operator</li> </ul> <p>NLog is useful in the simplest small applications as well as in large and complex ones. Due to its rich configuration abilities, you can use it in all your projects.</p><p>In the tutorial you will learn how to:</p> <ul> <li>Create a Console Application project in Visual Studio.</li> <li>Install NLog and its dependencies.</li> <li>Create and configure the NLog logger.</li> <li>Integrate the logger into the C# Console Application.</li> </ul> <h2 id="prerequisites">Prerequisites</h2> <p>You will need:</p> <ul> <li>Windows 10 installed.</li> <li>Visual Studio installed.</li> </ul> <p><div> <a class='not-prose block my-8 p-9 rounded-lg text-13 bg-logs-ad md:h-[254px] !no-underline' href='/telemetry?utm_content=upsell&amp;utm_medium=guides&amp;utm_source=community&amp;utm_term=how-to-start-logging-with-nlog'> <p class='inline-block font-bold ad-title-text text-transparent text-app-display-large'> The fastest log <br> search on the planet </p> <p class='mt-2 max-w-[253px] text-[#C9D3EE]'>Better Stack lets you see inside any stack, debug any issue, and resolve any&nbsp;incident.</p> <button class='mt-5 inline-block px-3 py-2 bg-neutral-700 rounded font-medium text-white bg-deprecated-primary-100 border border-deprecated-primary-200 leading-none whitespace-nowrap'> Explore more </button> </a> </div> </p> <h2 id="step-1-creating-a-project">Step 1 — Creating a Project</h2> <p>To get started, you need to create a new project. You can do it in several ways in Visual Studio. The first one is to select <strong>Create a new project</strong> in Visual Studio start window.</p><p>If the Visual Studio IDE is already open, you can follow the path on the top menu bar *<em>File &gt; New &gt; Project *</em>and create a new project this way.</p><p>The last way we are going to show you is to use the shortcut: <code class="prettyprint">Ctrl + Shift + N</code>.</p> <h2 id="step-2-installing-dependencies">Step 2 — Installing Dependencies</h2> <p>Before starting to work on the application, you need to install some dependency packages. Visual Studio provides multiple ways to use the NuGet Package Manager. In the tutorial we will use the Package Manager Console.</p><p>The first thing you have to do is to open the Package Manager Console. You can do it using <strong>Tools &gt; NuGet Package Manager &gt; Package Manager Console</strong>. Alternatively, you can sequentially press <code class="prettyprint">ALT</code>, <code class="prettyprint">V</code>, <code class="prettyprint">E</code>, and <code class="prettyprint">O</code>.</p><p>In the console that opens, run the following commands one by one.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Install-Package NLog.Extensions.Logging </code></pre> </div> </div> <p>The <code class="prettyprint">NLog.Extensions.Logging</code> package is the root package of NLog.</p> <h2 id="step-3-creating-a-logger">Step 3 — Creating a Logger</h2> <p>For the application, we are going to use the simplest way to create a logger in NLog — the <code class="prettyprint">LogManager</code> class. It provides the <code class="prettyprint">GetCurrentClassLogger</code> method to get a unique logger per each class. Unlike the globally configured logger, the logger per class helps you to easily capture the source of the log message.</p><p>The logger will use NLog&#39;s default log levels system. The system consists of the following 6 levels:</p> <ul> <li><strong>Fatal</strong> — used for reporting about errors that are forcing shutdown of the application.</li> <li><strong>Error</strong> — used for logging serious problems occurring during execution of the program.</li> <li><strong>Warn</strong>  — used for reporting non-critical unusual behaviour.</li> <li><strong>Info</strong> — used for informative messages highlighting the progress of the application for sysadmins and end users.</li> <li><strong>Debug</strong> — used for debugging messages with extended information about application processing.</li> <li><strong>Trace</strong> — the noisiest level, used for tracing the code</li> </ul> <p>Let&#39;s start coding. Your <code class="prettyprint">Program.cs</code> file should look like the code snippet below.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Program.cs using NLog; using System; namespace NLogAdvanced { class Program { // create a static logger field private static Logger logger = LogManager.GetCurrentClassLogger(); static void Main(string[] args) { } } } </code></pre> </div> </div> <h2 id="step-4-configuring-the-logger">Step 4 — Configuring the Logger</h2> <p>NLog has rich configuration abilities and provides two ways to configure the logger: programmatically or via a configuration file. You can get advanced information about each of them <a rel="" target="_blank" class="" href="https://nlog-project.org/config/">in the documentation<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>.</p><p>In this tutorial we&#39;re going to configure the logger using the <code class="prettyprint">nlog.config</code> file.</p><p>The first thing we need to do is to create a <code class="prettyprint">nlog.config</code> file in the root of the application. You can do it by pressing <code class="prettyprint">CRTL + SHIFT + A</code> and entering the <code class="prettyprint">nlog.config</code> name in the opened window.</p><p>Then, you have to set the file&#39;s <strong>Copy to Output Directory</strong> property to <strong>Copy always</strong>. It can be done by right-clicking the file in the solution explorer and selecting the Properties option.</p><p>The config file must look like that:</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>nlog.config &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema--&gt; &lt;nlog xmlns=&quot;http://www.nlog-project.org/schemas/NLog.xsd&quot; xsi:schemaLocation=&quot;NLog NLog.xsd&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; autoReload=&quot;true&quot; internalLogFile=&quot;c:\\logs\\console-example-internal.log&quot; internalLogLevel=&quot;Info&quot;&gt; &lt;/nlog&gt; </code></pre> </div> </div> <p>Now, let&#39;s write a config. The config is written in the XML language. If you are not familiar with the XML language, you may dive <a rel="" target="_blank" class="" href="https://www.w3schools.com/xml/default.asp">in the great XML tutorial by w3school<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>.</p><p>In our case the config consists of two parts: setting up the logging targets and setting up the logging rules.</p><p>We&#39;ve decided to add 3 logging targets for the application: the colorized console and 2 files. In the config file, each of them will be represented by a separate XML element. Let&#39;s write the targets in the <code class="prettyprint">nlog.config</code> file.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>nlog.config &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema--&gt; &lt;nlog xmlns=&quot;http://www.nlog-project.org/schemas/NLog.xsd&quot; xsi:schemaLocation=&quot;NLog NLog.xsd&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; autoReload=&quot;true&quot; internalLogFile=&quot;c:\\logs\\console-example-internal.log&quot; internalLogLevel=&quot;Info&quot;&gt; &lt;!-- the targets to write to --&gt; &lt;targets&gt; &lt;!-- write logs to the files --&gt; &lt;target xsi:type=&quot;File&quot; name=&quot;all_logs_file&quot; fileName=&quot;c:\\logs\\all.log&quot;/&gt; &lt;target xsi:type=&quot;File&quot; name=&quot;important_logs_file&quot; fileName=&quot;c:\\logs\\important.log&quot;/&gt; &lt;!-- write logs to the console--&gt; &lt;target xsi:type=&quot;ColoredConsole&quot; name=&quot;logconsole&quot; /&gt; &lt;/targets&gt; &lt;/nlog&gt; </code></pre> </div> </div> <p>After that, we can create the rules. In NLog, each rule can be applied to multiple loggers and targets and must be written as a separate XML element.</p><p>The first rule enforces all loggers to write all logs generated by the application to the colorized console.</p><p>The second rule enforces all loggers to write logs with debug and higher severity logs to the target named <code class="prettyprint">all_logs_file</code>.</p><p>The third rule enforces all loggers to write warnings and higher severity logs to the target named <code class="prettyprint">important_logs_file</code>.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>nlog.config &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt; &lt;!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema--&gt; &lt;nlog xmlns=&quot;http://www.nlog-project.org/schemas/NLog.xsd&quot; xsi:schemaLocation=&quot;NLog NLog.xsd&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; autoReload=&quot;true&quot; internalLogFile=&quot;c:\\logs\\console-example-internal.log&quot; internalLogLevel=&quot;Info&quot;&gt; &lt;!-- the targets to write to --&gt; &lt;targets&gt; &lt;!-- write logs to the files --&gt; &lt;target xsi:type=&quot;File&quot; name=&quot;all_logs_file&quot; fileName=&quot;c:\\logs\\all.log&quot;/&gt; &lt;target xsi:type=&quot;File&quot; name=&quot;important_logs_file&quot; fileName=&quot;c:\\logs\\important.log&quot;/&gt; &lt;!-- write logs to the console--&gt; &lt;target xsi:type=&quot;ColoredConsole&quot; name=&quot;logconsole&quot; /&gt; &lt;/targets&gt; &lt;!-- rules to map from logger name to target --&gt; &lt;rules&gt; &lt;logger name=&quot;*&quot; minlevel=&quot;Trace&quot; writeTo=&quot;logconsole&quot; /&gt; &lt;logger name=&quot;*&quot; minlevel=&quot;Debug&quot; writeTo=&quot;all_logs_file&quot; /&gt; &lt;logger name=&quot;*&quot; minlevel=&quot;Warn&quot; writeTo=&quot;important_logs_file&quot; /&gt; &lt;/rules&gt; &lt;/nlog&gt; </code></pre> </div> </div> <h2 id="step-5-creating-extra-classes">Step 5 — Creating Extra Classes</h2> <p>We&#39;re going to use 2 extra classes. To create a new file for a class, you can press <code class="prettyprint">CRTL + SHIFT + A</code> and select C# class in the window that opens.</p><p>The first file will contain a <code class="prettyprint">Person</code> class. You can see its code in the snippet below.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Person.cs using System; using NLog; namespace NLogAdvanced { class Person { // create a static logger field private static Logger logger = LogManager.GetCurrentClassLogger(); public string Name { get; set; } public string LastName { get; set; } public Person(string name, string lastName) { Name = name; LastName = lastName; logger.Info(&quot;Created a person {@person} at {now}&quot;, this, DateTime.Now); } } } </code></pre> </div> </div> <p>The second file will contain a <code class="prettyprint">Car</code> class. You can see its code in the snippet below.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Car.cs using System; using NLog; namespace NLogAdvanced { class Car { // create a static logger field private static Logger logger = LogManager.GetCurrentClassLogger(); public string Model { get; set; } public int YearReleased { get; set; } public Person Owner { get; set; } public Car(string model, int yearReleased, Person owner) { Model = model; YearReleased = yearReleased; Owner = owner; logger.Debug(&quot;Created a car {@car} at {now}&quot;, this, DateTime.Now); } } } </code></pre> </div> </div> <p>With <code class="prettyprint">@</code> — <em>destructuring operator</em> we can break objects down into properties with values.</p> <h2 id="step-6-logging">Step 6 — Logging</h2> <p>To demonstrate how the logger works, we will log some simple messages, at least one of each level. It&#39;s a pretty straightforward task, because of the clear NLog API.</p><p>More specifically, NLog logger provides 6 methods for logging: <code class="prettyprint">Trace</code>, <code class="prettyprint">Debug</code>, <code class="prettyprint">Info</code>, <code class="prettyprint">Warn</code>, <code class="prettyprint">Error</code>, and <code class="prettyprint">Fatal</code>.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Program.cs using NLog; using System; namespace NLogAdvanced { class Program { // create a static logger field private static Logger logger = LogManager.GetCurrentClassLogger(); static void Main(string[] args) { // create 2 persons var person1 = new Person(&quot;Jonh&quot;, &quot;Gold&quot;); var person2 = new Person(&quot;James&quot;, &quot;Miller&quot;); // create 2 cars var car1 = new Car(&quot;Tesla Model S&quot;, 2020, person1); var car2 = new Car(&quot;Tesla Model X&quot;, 2020, person2); // logging logger.Trace(&quot;Some verbose log&quot;); logger.Debug(&quot;Some debug log&quot;); logger.Info(&quot;Person1: {@person}&quot;, person1); logger.Info(&quot;Car2: {@car}&quot;, car2); logger.Warn(&quot;Warning accrued at {now}&quot;, DateTime.Now); logger.Error(&quot;Error accrued at {now}&quot;, DateTime.Now); logger.Fatal(&quot;Serious problem with car {@car} accrued at {now}&quot;, car1, DateTime.Now); } } } </code></pre> </div> </div> <p>Now, let&#39;s build and run the program. You can simply do this by pressing <code class="prettyprint">CTRL + F5</code>.</p><p>After the execution, your console&#39;s output should look like:</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Output 2021-05-27 00:17:51.1315|INFO|NLogAdvanced.Person|Created a person {&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.5391|INFO|NLogAdvanced.Person|Created a person {&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9188|DEBUG|NLogAdvanced.Car|Created a car {&quot;Model&quot;:&quot;Tesla Model S&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;}} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9433|DEBUG|NLogAdvanced.Car|Created a car {&quot;Model&quot;:&quot;Tesla Model X&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;}} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9645|TRACE|NLogAdvanced.Program|Some verbose log 2021-05-27 00:17:51.9809|DEBUG|NLogAdvanced.Program|Some debug log 2021-05-27 00:17:51.9809|INFO|NLogAdvanced.Program|Person1: {&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;} 2021-05-27 00:17:51.9809|INFO|NLogAdvanced.Program|Car2: {&quot;Model&quot;:&quot;Tesla Model X&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;}} 2021-05-27 00:17:52.0096|WARN|NLogAdvanced.Program|Warning accrued at 5/27/2021 12:17:51 AM 2021-05-27 00:17:52.0493|ERROR|NLogAdvanced.Program|Error accrued at 5/27/2021 12:17:52 AM 2021-05-27 00:17:52.0781|FATAL|NLogAdvanced.Program|Serious problem with car {&quot;Model&quot;:&quot;Tesla Model S&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;}} accrued at 5/27/2021 12:17:52 AM </code></pre> </div> </div> <p>Now, let&#39;s check the logs written in the files. The files are located in the <code class="prettyprint">C:\\logs</code>.</p><p>The first, check your <code class="prettyprint">important.json</code> file, it should look like.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Output 2021-05-27 00:17:52.0096|WARN|NLogAdvanced.Program|Warning accrued at 5/27/2021 12:17:51 AM 2021-05-27 00:17:52.0493|ERROR|NLogAdvanced.Program|Error accrued at 5/27/2021 12:17:52 AM 2021-05-27 00:17:52.0781|FATAL|NLogAdvanced.Program|Serious problem with car {&quot;Model&quot;:&quot;Tesla Model S&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;}} accrued at 5/27/2021 12:17:52 AM0 </code></pre> </div> </div> <p>The second, check your <code class="prettyprint">all.json</code> file, it should look like.</p><div class='relative mb-5 bg-neutral-40 border border-neutral-50 rounded-md text-[15px] shadow' data-controller='clipboard'> <div class='px-4 py-[6px] bg-white flex items-center rounded-t-md'> <div class='text-[15px] font-medium inline align-middle grow'><span class="text-app-small">&nbsp;</span></div> <div class="copy-button hidden sm:flex sm:items-center" data-clipboard-target='confirmation'> <button class='text-sm p-1' data-action='click->clipboard#copy'> <svg alt='copy code to clipboard' height='18' width='18' class='m-0' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/articles/clipboard-d6c07cf2face9fc42a34bcb0088c7164f06f39c14281e7e510185191e9a8188a.svg#root' /></svg> </button> <span class='copy-confirmation text-sm p-0'>Copied!</span> </div> </div> <div class='code-wrapper overflow-x-auto p-2 rounded ' data-clipboard-target='content' data-controller='code'> <pre class='highlight language-'><code>Output 2021-05-27 00:17:51.1315|INFO|NLogAdvanced.Person|Created a person {&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.5391|INFO|NLogAdvanced.Person|Created a person {&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9188|DEBUG|NLogAdvanced.Car|Created a car {&quot;Model&quot;:&quot;Tesla Model S&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;}} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9433|DEBUG|NLogAdvanced.Car|Created a car {&quot;Model&quot;:&quot;Tesla Model X&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;}} at 5/27/2021 12:17:51 AM 2021-05-27 00:17:51.9809|DEBUG|NLogAdvanced.Program|Some debug log 2021-05-27 00:17:51.9809|INFO|NLogAdvanced.Program|Person1: {&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;} 2021-05-27 00:17:51.9809|INFO|NLogAdvanced.Program|Car2: {&quot;Model&quot;:&quot;Tesla Model X&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;James&quot;, &quot;LastName&quot;:&quot;Miller&quot;}} 2021-05-27 00:17:52.0096|WARN|NLogAdvanced.Program|Warning accrued at 5/27/2021 12:17:51 AM 2021-05-27 00:17:52.0493|ERROR|NLogAdvanced.Program|Error accrued at 5/27/2021 12:17:52 AM 2021-05-27 00:17:52.0781|FATAL|NLogAdvanced.Program|Serious problem with car {&quot;Model&quot;:&quot;Tesla Model S&quot;, &quot;YearReleased&quot;:2020, &quot;Owner&quot;:{&quot;Name&quot;:&quot;Jonh&quot;, &quot;LastName&quot;:&quot;Gold&quot;}} accrued at 5/27/2021 12:17:52 AM </code></pre> </div> </div> <h2 id="conclusion">Conclusion</h2> <p>Proper logging can greatly assist in the support and development of your application. This may seem like a daunting task, but NLog is a fast and configurable logging framework that greatly simplifies the task.</p><p>In the tutorial, you have configured your logging system with multiple logging targets for a .NET console application with NLog.</p><p>Now developing and maintaining your .NET applications will be much easier!</p> <div class='docsearch-ignore'> <a class='block w-0 h-0' id='author-card'></a> <div class='border border-neutral-50 shadow-lg rounded-xl text-base text-neutral-600 flex flex-col px-9 py-6 gap-6 mt-12'> <div class='flex flex-wrap gap-3'> <div><img width="64" height="64" alt="Author&#39;s avatar" class="!rounded-none m-0 lazyload" data-src="/assets/articles/authors/jenda-28fd772109ddcc0adc7927b9e14d95e115a39756f2bd015fb319e21a88933a56.png" src="" /></div> <div class='flex flex-col justify-end mb-1'> <div class='text-neutral-400'>Article by</div> <div class='text-neutral-800 font-bold text-xl'>Jenda Tovarys</div> </div> <div class='flex grow justify-end items-end content-end gap-3 mb-1'> <a class='p-1 hover:bg-neutral-50 rounded' href='https://www.linkedin.com/in/jantovarys/' rel='nofollow noopener noreferrer' target='_blank'> <svg width='16' height='16' alt='LinkedIn' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/linkedin-7b0f1d7d2ae8b921a7e101c21f2e1c3bdb6bd10a67ee8bab3989f4b5198d8771.svg#root' /></svg> </a> <a class='p-1 hover:bg-neutral-50 rounded' href='https://twitter.com/jantovarys' rel='nofollow noopener noreferrer' target='_blank'> <svg width='16' height='16' alt='Twitter' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/twitter-0a71c82dff1d94a2c2cec482547d6393d7341e4f4be980ed508136a75b3d1527.svg#root' /></svg> </a> </div> </div> <div class='text-neutral-400 whitespace-pre-wrap'>Jenda leads Growth at Better Stack. For the past 5 years, Jenda has been writing about exciting learnings from working with hundreds of developers across the world. When he&#39;s not spreading the word about the amazing software built at Better Stack, he enjoys traveling, hiking, reading, and playing tennis.</div> </div> <iframe class='mt-16 rounded-xl' frameborder='0' height='320' scrolling='no' src='https://betterstack.substack.com/embed' style='border:1px solid #EEE; background:white;' width='100%'></iframe> <div class='mt-11 text-center'> <div class='text-neutral-300 mt-6'> Got an article suggestion? <a class="!underline !text-neutral-300" href="mailto:hello@betterstack.com?subject=Suggestion%20for%20How%20To%20Start%20Logging%20With%20NLog&amp;body=">Let us know</a> </div> <div class='flex justify-center items-center space-x-3 mt-4'> <a href='https://twitter.com/share?ref_src=twsrc%5Etfw&amp;url=https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/&amp;text=How+To+Start+Logging+With+NLog+%7C+Better+Stack+Community&amp;via=betterstackhq' rel='nofollow noopener' target='_blank'> <svg width='16' height='16' alt='Share on Twitter' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/twitter-0a71c82dff1d94a2c2cec482547d6393d7341e4f4be980ed508136a75b3d1527.svg#root' /></svg> </a> <a href='https://www.facebook.com/sharer/sharer.php?u=https://betterstack.com/community/guides/logging/how-to-start-logging-with-nlog/' rel='nofollow noopener' target='_blank'> <svg width='16' height='16' alt='Share on Facebook' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/facebook-6ffe06602047bc3abd84874b8b66c4f962ff5e90b8974b83782cbc1c37b32c44.svg#root' /></svg> </a> <a href='mailto:?subject=How%20To%20Start%20Logging%20With%20NLog&amp;body=https%3A%2F%2Fbetterstack.com%2Fcommunity%2Fguides%2Flogging%2Fhow-to-start-logging-with-nlog%2F'> <svg width='16' height='16' alt='Share via e-mail' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/mail-023765f22acbe30ad587791edbf15dc0ac019d9617046176376561282b997023.svg#root' /></svg> </a> </div> </div> <div class='mt-20 text-center heading-h5'>Next article</div> <a class='mt-5 bg-neutral-40 rounded-lg flex hover:!no-underline' href='/community/guides/logging/how-to-start-logging-with-log4net/'> <div class='p-5 grow'> <div class='text-xl font-bold text-neutral-800'>How To Start Logging With Log4net</div> <div class='mt-2 text-neutral-300'>Learn how to start logging with Log4NET and go from basics to best practices in no time.</div> </div> <div class='p-5 flex items-center'>→</div> </a> <div class='mt-24 flex flex-col items-center'> <a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' rel='nofollow noopener' target='_blank'> <img alt="Licensed under CC-BY-NC-SA" class="m-0 lazyload" width="89" height="31" data-src="/assets/articles/cc-by-nc-sa-1fa5a2f7978211f24b8230a7e79097dd1f8a36be35e813693c49348cf1689f42.png" src="" /> </a> <p class='mt-5 text-center text-neutral-300 max-w-[365px]'>This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.</p> </div> </div> </div> </div> <div class='hidden lg:block ml-12 xl:-mr-8 shrink-0 w-[205px]'> <ol class='-mt-2 mb-7 text-base overflow-y-auto pb-24'> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Explainers</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-management/'>What is Log Management?</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-aggregation/'>What is Log Aggregation?</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-visualization/'>What is Log Visualization?</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-monitoring/'>What is Log Monitoring?</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logging-framework/'>How to Choose a Logging Framework</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logfmt/'>Introduction to Logfmt</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/json-logging/'>Introduction to JSON Logging</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/structured-logging/'>What is Structured Logging?</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-levels-explained/'>Understanding Log Levels</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/change-log-levels-dynamically/'>Changing Log Levels Dynamically</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logging-microservices/'>Logging in Microservices</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Best Practices</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logging-best-practices/'>12 Logging Best Practices</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-formatting/'>Log Formatting Best Practices</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/sensitive-data/'>Keeping Sensitive Data From Logs</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-sampling/'>Log Sampling Explained</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/reduce-logging-costs/'>Reducing Logging Costs</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Linux</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-view-and-configure-linux-logs-on-ubuntu-20-04/'>Administering System Logs on Linux</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-manage-log-files-with-logrotate-on-ubuntu-20-04/'>Rotating Logs with Logrotate</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-control-journald-with-journalctl/'>Journalctl Log Management</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-view-and-configure-apache-access-and-error-logs/'>Logging in Apache</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-view-and-configure-nginx-access-and-error-logs/'>Nginx Logging</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/monitoring-linux-auth-logs/'>Monitoring Linux Authentication Logs</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/caddy-logging/'>Logging in Caddy</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Node.js</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-install-setup-and-use-pino-to-log-node-js-applications/'>Logging with Pino</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-install-setup-and-use-winston-and-morgan-to-log-node-js-applications/'>Logging with Winston</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/nodejs-logging-best-practices/'>Node.js Logging Best Practices</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-nodejs-logging-libraries/'>8 Best Node.js Logging Libraries</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/morgan-logging-nodejs/'>Morgan Logging in Node.js</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Python</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-python/'>Logging in Python</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/loguru/'>Logging with Loguru</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/structlog/'>Logging with Structlog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-django/'>Logging in Django</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-flask/'>Logging in Flask</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/python/python-logging-best-practices/'>Python Logging Best Practices</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-python-logging-libraries/'>Best Python Logging Libraries</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Go</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logging-in-go/'>Logging in Go (Slog)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/golang-contextual-logging/'>Contextual Logging in Go</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/zerolog/'>Logging with Zerolog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/go/zap/'>Logging with Zap</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-golang-logging-libraries/'>9 Best Go Logging Libraries</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Ruby</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-view-and-configure-ruby-logs/'>Logging in Ruby</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-ruby-on-rails/'>Logging in Ruby on Rails</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-ruby-logging-libraries/'>Best Ruby Logging Libraries</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/semantic-logger/'>Semantic Logger</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 text-neutral-800 open py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>.NET</a> </div> <ol class='mb-4' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-net/'>Logging in .NET</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-serilog/'>Logging with Serilog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a aria-current='page' class='grow py-2 text-deprecated-primary-700' href='/community/guides/logging/how-to-start-logging-with-nlog/'>Logging with NLog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-log4net/'>Logging with Log4net</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-dotnet-logging-libraries/'>Best .NET Logging Libraries</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Java</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-java/'>Java Logging Best Practices</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-log4j/'>Logging with Log4j</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/java/logback/'>Logging with Logback</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-java-logging-libraries/'>Best Java Logging Libraries</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>PHP</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-php/'>Logging in PHP</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-monolog/'>Logging with Monolog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-laravel/'>Logging in Laravel</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-log4php/'>Logging with Log4php</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/best-php-logging-libraries/'>Best PHP Logging Libraries</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/php-logging-opentelemetry/'>PHP Logging with OpenTelemetry</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Database</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-mysql/'>Logging in MySQL</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-postgresql/'>Logging in PostgreSQL</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-mariadb/'>Logging in MariaDB</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-redis/'>Logging in Redis</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/database/how-to-start-logging-with-mongodb/'>Logging in MongoDB</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Docker</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-docker/'>Logging in Docker</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/docker-logs/'>Docker Container Logs</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/docker-compose-logs/'>Docker Compose Logs</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Platforms</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-heroku/'>Logging in Heroku</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/platforms/vercel-logging/'>Logging in Vercel</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/gcp-logging/'>Logging in GCP</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/azure-logging/'>Logging in Azure</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Platforms: AWS</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/aws-logging/'>Logging in AWS</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/aws-lambda-logging/'>AWS Lambda Logging</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/aws-cloudtrail-logging/'>AWS CloudTrail Logs</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Log Shippers</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/vector-explained/'>Vector</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/fluentd-explained/'>Fluentd</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/fluent-bit-explained/'>Fluent Bit</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/logstash-explained/'>Logstash</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/filebeat-explained/'>Filebeat</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/rsyslog-explained/'>Rsyslog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-configure-centralised-rsyslog-server/'>Logging with Rsyslog</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/logging/filebeat-vs-logstash/'>Filebeat vs Logstash</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/logging/fluentd-vs-fluent-bit/'>Fluentd vs Fluent Bit</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/log-shippers-explained/'>The Top 7 Log Shippers Explained</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click-&gt;collapse#toggle'> <a class='grow py-2' href=''>Other</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-start-logging-with-postfix/'>Logging with Postfix</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/logging/how-to-view-and-analyze-logs-with-windows-event-viewer/'>Logging in Windows</a> </div> </li> </ol> </li> </ol> </div> </div> </div> <div class='mt-20 pt-10 text-neutral-200 bg-[#0B0C14]'> <section class='pt-16 md:pt-20 px-5 md:px-10 pb-16 md:pb-32 bg-[#0B0C14]'> <div class='container mx-auto max-w-[950px]'> <h4 class='sm:ml-10 text-white font-bold whitespace-nowrap text-[36px]'>Make your mark</h4> <div class='mt-12 flex flex-col md:flex-row gap-5'> <div class='flex-1 rounded-xl border border-[#727DA1]/20 bg-[#171824]/80'> <div class='p-8 h-full flex flex-col justify-between'> <div class='grow'> <h5 class='md:mx-3 text-white font-bold text-[20px] leading-[130%]'>Join the writer&apos;s program</h5> <p class='mt-3 md:mx-3'> Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them. </p> <a class='block mt-3 md:mx-3 text-[#7C87F7]' href='https://betterstack.com/community/write-for-us'> Write for us <svg class=' w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root'></svg> </a> </div> <div> <div class='mt-10 md:mx-3'>Writer of the month</div> <div class='relative mt-5 px-3 py-4 rounded-xl flex items-start gap-3 bg-[#7C87F7] ring-[6px] ring-[#7C87F7]/10'> <img alt="" width="40" height="40" class="shrink-0 mt-1 lazyload" data-src="/assets/articles/authors/marin-0d19fe482115fe2b15c8429a7ee4eb88d803984eaa7c1d8c7309241049f3d402.png" src="" /> <div class='text-white'> <div class='font-bold'>Marin Bezhanov</div> <div class='mt-1 text-ellipsis text-base line-clamp-2'>Marin is a software engineer and architect with a broad range of experience working...</div> </div> <div class='absolute top-[10px] right-[10px]'> <svg class=' text-white w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/sparkles-a7c4acf0bcb9f170420cb9484c35a2db6d1ed4ef2796d19929b9d9b792002eb4.svg#root'></svg> </div> </div> </div> </div> </div> <div class='flex-1'> <div class='rounded-xl border border-[#727DA1]/20'> <div class='p-10 bg-github-community rounded-t-xl bg-[#171824]/80'> <h5 class='md:mx-3 text-white font-bold text-[20px] leading-[130%]'>Build on top of Better Stack</h5> <p class='mt-3 md:mx-3'> Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email. </p> <a class='block mt-3 md:mx-3 whitespace-nowrap text-[#7C87F7]' href='mailto:community@betterstack.com?subject=Better%20Stack%20community%20project&amp;body='> <svg size='w-[18px] h-[18px]' class='hidden sm:inline w-[18px] h-[18px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/envelope-11bb634875b80bcbea772441a6edd1fc99b92bfea2a5bbd20b1976622bb05e90.svg#root'></svg> community@betterstack.com </a> </div> <div class='px-6 py-4 border-t text-13 border-[#727DA1]/20'> <p class='max-w-[320px]'>or submit a pull request and help us build better products for everyone.</p> </div> </div> <a class='relative mt-5 p-12 rounded-xl border text-neutral-200 flex flex-col items-center border-[#727DA1]/20' href='https://github.com/betterstack-community/projects' target='_blank'> <svg alt='' width='20' height='20' class='block' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root'></svg> <p class='mt-2 text-13 text-center max-w-[180px]'>See the full list of amazing projects on github</p> <div class='absolute top-4 right-4'> <svg size='w-4 h-4' class=' w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/arrow-up-right-8a7bd4b24ec9b699f4169848a75b04c0ced5cd1a7016c513456e14b68c71381f.svg#root'></svg> </div> </a> </div> </div> </div> </section> </div> </main> </div> <div class='dark'> <nav class='bg-white text-base border-t dark:bg-[#0B0C14] border-neutral-300/10 text-[#363D4E] dark:text-neutral-200'> <div class='mx-auto px-5 md:px-10 pt-8 lg:pt-14 pb-10 md:pb-20 md:flex max-w-[1110px]'> <div class='flex-2 lg:grow flex gap-5'> <div class='flex-1 lg:flex-2 flex flex-col lg:flex-row'> <div class='lg:mr-16 flex-1'> <div class='mb-16 hidden md:block'> <div class='font-medium text-black dark:text-white'>Platform</div> <a class="inline-block -mx-1 px-1 mt-3" href="/enterprise">Enterprise</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime">Uptime</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/telemetry">Telemetry</a> </div> <div class='mb-16'> <div class='font-medium text-black dark:text-white'>Solutions</div> <a class="inline-block -mx-1 px-1 mt-3" href="/telemetry">Log management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/infrastructure-monitoring">Infrastructure monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime">Uptime monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/website-monitoring">Website monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/incident-management">Incident management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/status-page">Status page</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/incident-silencing">Incident silencing</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/slack-incident-management">Slack-based incident management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/dashboards">Dashboards</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/integrations">Integrations</a> </div> </div> <div class='flex-1'> <div class='mb-16 hidden lg:block'> <div class='font-medium text-black dark:text-white'>Resources</div> <a class="inline-block -mx-1 px-1 mt-3 whitespace-nowrap" href="/help">Help &amp; Support</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/uptime">Uptime docs</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/logs">Logs docs</a> </div> <div class='mb-16 lg:hidden'> <div class='font-medium text-black dark:text-white'>Company</div> <a class="inline-block -mx-1 px-1 mt-3" href="/careers">Work at Better Stack</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/careers/engineering">Engineering</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/security">Security</a> </div> <div class='mb-16'> <div class='font-medium text-black dark:text-white'>Community</div> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/guides">Guides</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/questions">Questions</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/comparisons">Comparisons</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/blog">Blog</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/write-for-us">Write for us</a> </div> </div> </div> <div class='lg:ml-12 flex-1 flex flex-col'> <div class='mb-16 hidden lg:flex flex-col items-start'> <div class='font-medium text-black dark:text-white'>Company</div> <a class="inline-block -mx-1 px-1 mt-3" href="/careers">Work at Better Stack</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/careers/engineering">Engineering</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/security">Security</a> </div> <div class='mb-16 lg:hidden'> <div class='font-medium text-black dark:text-white'>Resources</div> <a class="inline-block -mx-1 px-1 mt-3 whitespace-nowrap" href="/help">Help &amp; Support</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/uptime">Uptime docs</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/logs">Logs docs</a> </div> <div class='flex flex-col items-start'> <div class='font-medium text-black dark:text-white'>Compare</div> <a class="inline-block -mx-1 px-1 mt-3" href="/pingdom-alternative">Pingdom</a> <a class="inline-block -mx-1 px-1 mt-3" href="/pagerduty-alternative">Pagerduty</a> <a class="inline-block -mx-1 px-1 mt-3" href="/statuspage-io-alternative">StatusPage.io</a> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime-robot-alternative">Uptime Robot</a> <a class="inline-block -mx-1 px-1 mt-3" href="/statuscake-alternative">StatusCake</a> <a class="inline-block -mx-1 px-1 mt-3" href="/opsgenie-alternative">Opsgenie</a> <a class="inline-block -mx-1 px-1 mt-3" href="/victorops-alternative">VictorOps</a> </div> </div> </div> <div class='md:ml-12 flex-1 flex flex-col items-start grow max-w-[450px]'> <div class='font-medium text-black dark:text-white'>From the community</div> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/guides/incident-management/what-is-incident-management/">What Is Incident Management? Beginner’s Guide</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/guides/incident-management/on-call-scheduling/">How to Create a Developer-Friendly On-Call Schedule in 7 steps</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/free-status-page-tools/">8 Best Free &amp; Open Source Status Page Tools in 2024</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/api-monitoring-tools/">10 Best API Monitoring Tools in 2024</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/incident-management-tools/">5 Most Used Incident Management Tools (Reviewed &amp; Ranked)</a> </div> </div> </nav> <footer class='bg-[#F3F4F7] dark:bg-[#05060F]'> <div class='mx-auto text-base lg:px-5 max-w-[1110px] text-[#363D4E] dark:text-neutral-200'> <div class='px-5 pt-9 flex flex-col lg:flex-row justify-between items-center lg:items-end border-t border-neutral-300/10'> <div> <svg width='154' height='21' alt='' class='text-black dark:text-white scale-75 lg:scale-100' style='--currentColor: currentColor;'><use href='/assets/v2/better-stack-logo-0dd586683a61184ea953948d207470eeec73c76d81d57cd8af24bf56b36a90db.svg#root' /></svg> <p class='mt-3 hidden lg:block max-w-[342px]'> Better Stack lets you see inside any stack, debug any issue, and resolve any incident. </p> </div> <div class='flex items-center gap-6 whitespace-nowrap'> <a class="hidden lg:block -mx-1 px-1" href="tel:+1 (201) 500-2007">+1 (201) 500-2007</a> <a class="hidden lg:block -mx-1 px-1" href="mailto:hello@betterstack.com">hello@betterstack.com</a> <div class='hidden lg:block h-4 border-l border-neutral-300/10'></div> <div class='hidden lg:flex'><div class='flex gap-4 text-neutral-300'> <a aria-label='Better Stack on Instagram' href='https://www.instagram.com/betterstackhq/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/instagram-4cc4103de28d49cc15040cfbf4b7a5e62fc76726f8a740f0135e777242b972b5.svg#root' /></svg></a> <a aria-label='Better Stack on TikTok' href='https://www.tiktok.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/tiktok-88d69bb11d499d82c7fefe4023153cd0152cbbd72809576171915fb9bd69a083.svg#root' /></svg></a> <a aria-label='Better Stack on LinkedIn' href='https://www.linkedin.com/company/betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/linkedin-4f511cfd40812cf617fa6ca9fbeff362681a975a1f4f911261bdbeaa2b1cbe19.svg#root' /></svg></a> <a aria-label='Better Stack on Twitter' href='https://twitter.com/betterstackhq' rel='nofollow noopener' target='_blank'><svg width='16' height='16' style='--currentColor: currentColor;'><use href='/assets/v2/twitter-c4218c9e217942ebbf4db83a3dec654ce97a94806c3d0fe7ebe31d7d7d2aa9b9.svg#root' /></svg></a> <a aria-label='Better Stack on Github' href='https://github.com/BetterStackHQ/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root' /></svg></a> <a aria-label='Better Stack on YouTube' href='https://www.youtube.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='22' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/youtube-30a10afcb8b82cfd3a8ee62842a5d0651fa8d01ac0e6e472349f4359ea683cae.svg#root' /></svg></a> </div> </div> </div> </div> <div class='px-5 lg:px-2 lg:mx-3 mt-5 py-3 lg:border-t flex flex-col lg:flex-row justify-between items-center border-neutral-300/10 dark:border-[#1F2433]/70 text-[12px] leading-[18px]'> <div class='flex items-center gap-6 whitespace-nowrap dark:text-neutral-300'> <a class="-mx-1 px-1" href="/terms">Terms of Use</a> <a class="-mx-1 px-1" href="/privacy">Privacy Policy</a> <a class="-mx-1 px-1" href="/dpa">GDPR</a> <a class='hidden sm:block -mx-1 px-1' href='https://status.betterstack.com/' target='_blank'> <svg width='14' height='15' alt='All services are up' class='mr-1 hidden lg:inline' style='--currentColor: currentColor;'><use href='/assets/v2/status-green-9b323a3710393221033993056c8b5de0999eaf3139262ab0625db787dee99f00.svg#root' /></svg> System status </a> </div> <div class='mt-8 mb-2 flex lg:hidden'><div class='flex gap-4 text-neutral-300'> <a aria-label='Better Stack on Instagram' href='https://www.instagram.com/betterstackhq/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/instagram-4cc4103de28d49cc15040cfbf4b7a5e62fc76726f8a740f0135e777242b972b5.svg#root' /></svg></a> <a aria-label='Better Stack on TikTok' href='https://www.tiktok.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/tiktok-88d69bb11d499d82c7fefe4023153cd0152cbbd72809576171915fb9bd69a083.svg#root' /></svg></a> <a aria-label='Better Stack on LinkedIn' href='https://www.linkedin.com/company/betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/linkedin-4f511cfd40812cf617fa6ca9fbeff362681a975a1f4f911261bdbeaa2b1cbe19.svg#root' /></svg></a> <a aria-label='Better Stack on Twitter' href='https://twitter.com/betterstackhq' rel='nofollow noopener' target='_blank'><svg width='16' height='16' style='--currentColor: currentColor;'><use href='/assets/v2/twitter-c4218c9e217942ebbf4db83a3dec654ce97a94806c3d0fe7ebe31d7d7d2aa9b9.svg#root' /></svg></a> <a aria-label='Better Stack on Github' href='https://github.com/BetterStackHQ/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root' /></svg></a> <a aria-label='Better Stack on YouTube' href='https://www.youtube.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='22' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/youtube-30a10afcb8b82cfd3a8ee62842a5d0651fa8d01ac0e6e472349f4359ea683cae.svg#root' /></svg></a> </div> </div> <div class='flex items-center text-neutral-300'> &copy; 2025 Better Stack, Inc. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="root" fill="none" height="15" viewBox="0 0 14 15" width="14" class="ml-2 transition hover:-rotate-[15deg] hidden lg:inline"><mask id="a" fill="#000" height="14" maskUnits="userSpaceOnUse" width="14" x=".84082" y=".910156"><path d="m.84082.910156h14v14h-14z" fill="#fff"></path><path clip-rule="evenodd" d="m12.4541 1.91016h-4.37651v.54686h-.54823v.54771 1.85936 1.2038h-.54617v.54725h-.87535v.54642h-.87576v.54777h-.54616v.54551h-.0011-.54589-.54734v-.65488h-.54706v2.84474h.54616v.6549h.54824v.547h.54699v.4392.6557.5469.4376.0003h.65647v-.0003h.43765v-.4376h-.43765v-.5469h.43765v-.6557h.54706v-.5478h.65609v.5472h.43768v.1982h1.09412v-.4377h-.54709v-.8541h.54701v-.5472h.54712v-.87494h.54616v-1.86076h.65821v.43832h.547v-.54706h-.0011v-.43832h-1.20411v-1.2027h.65671v-1.09465h2.1892v-.0002h.5459v-2.40707h-.5459zm-9.41064 5.25148h-.54617v-1.20358h-.65647v3.50119h.54616v.43769h.65648zm7.22294-1.74985h1.6412v.54706h-1.6412zm-1.62526-2.63729h.00042v-.00005h.80045v.00013h.26677v1.06726h-.26682v-.00107h-.8004v-.26582h-.00042zm.26682.79945h.534v-.53268h-.534z" fill="#000" fill-rule="evenodd"></path></mask><path d="m8.07759 1.91016v-.952682h-.95268v.952682zm4.37651 0h.9527v-.952682h-.9527zm-4.37651.54686v.95268h.95268v-.95268zm-.54823 0v-.95268h-.95268v.95268zm0 3.61087v.95268h.95268v-.95268zm-.54617 0v-.95268h-.95267v.95268zm0 .54725v.95268h.95268v-.95268zm-.87535 0v-.95268h-.95267v.95268zm0 .54642v.95268h.95268v-.95268zm-.87576 0v-.95268h-.95268v.95268zm0 .54777v.95268h.95268v-.95268zm-.54616 0v-.95268h-.95268v.95268zm0 .54551v.95268h.95268v-.95268zm-1.09433 0h-.95268v.95268h.95268zm0-.65488h.95268v-.95268h-.95268zm-.54706 0v-.95268h-.95268v.95268zm0 2.84474h-.95268v.9527h.95268zm.54616 0h.95268v-.9527h-.95268zm0 .6549h-.95268v.9526h.95268zm.54824 0h.95268v-.9527h-.95268zm0 .547h-.95268v.9527h.95268zm.54699 0h.95268v-.9527h-.95268zm0 2.0797h-.95268v.9527h.95268zm.65647 0v.9527h.95268v-.9527zm0-.0003v-.9526h-.95268v.9526zm.43765 0v.9527h.95268v-.9527zm0-.4376h.95268v-.9527h-.95268zm-.43765 0h-.95268v.9527h.95268zm0-.5469v-.9527h-.95268v.9527zm.43765 0v.9527h.95268v-.9527zm0-.6557v-.9527h-.95268v.9527zm.54706 0v.9527h.95268v-.9527zm0-.5478v-.9526h-.95268v.9526zm.65609 0h.95268v-.9526h-.95268zm0 .5472h-.95267v.9527h.95267zm.43768 0h.95268v-.9527h-.95268zm0 .1982h-.95268v.9526h.95268zm1.09412 0v.9526h.95268v-.9526zm0-.4377h.95268v-.9527h-.95268zm-.54709 0h-.95267v.9527h.95267zm0-.8541v-.9527h-.95267v.9527zm.54701 0v.9527h.95268v-.9527zm0-.5472v-.9527h-.95268v.9527zm.54712 0v.9527h.95267v-.9527zm0-.87494v-.95267h-.95268v.95267zm.54616 0v.95264h.95271v-.95264zm0-1.86076v-.95268h-.95268v.95268zm.65821 0h.9527v-.95268h-.9527zm0 .43832h-.9527v.95268h.9527zm.547 0v.95268h.9527v-.95268zm0-.54706h.9527v-.95268h-.9527zm-.0011 0h-.95264v.95268h.95264zm0-.43832h.9527v-.95268h-.9527zm-1.20411 0h-.95268v.95268h.95268zm0-1.2027v-.95268h-.95268v.95268zm.65671 0v.95268h.9527v-.95268zm0-1.09465v-.95268h-.95267v.95268zm2.1892 0v.95267h.9527v-.95267zm0-.0002v-.95268h-.9527v.95268zm.5459 0v.95267h.9526v-.95267zm0-2.40707h.9526v-.95268h-.9526zm-.5459 0h-.9527v.95268h.9527zm-9.95681 4.70462h-.95268v.95268h.95268zm.54617 0h.95267v-.95268h-.95267zm-.54617-1.20358h.95268v-.95268h-.95268zm-.65647 0v-.95268h-.952678v.95268zm0 3.50119h-.952678v.95265h.952678zm.54616 0h.95268v-.95268h-.95268zm0 .43769h-.95268v.95266h.95268zm.65648 0v.95266h.95267v-.95266zm8.86414-4.48515h.9526v-.95268h-.9526zm-1.6412 0v-.95268h-.9527v.95268zm1.6412.54706v.95268h.9526v-.95268zm-1.6412 0h-.9527v.95268h.9527zm-1.62484-3.18435v.95268h.95268v-.95268zm-.00042 0v-.95268h-.95267v.95268zm.00042-.00005v-.95268h-.95268v.95268zm.80045 0h.95269v-.95268h-.95269zm0 .00013h-.95268v.95268h.95268zm.26677 0h.95272v-.95268h-.95272zm0 1.06726v.95268h.95272v-.95268zm-.26682 0h-.95268v.95268h.95268zm0-.00107h.95264v-.95268h-.95264zm-.8004 0h-.95268v.95267h.95268zm0-.26582h.95268v-.95268h-.95268zm-.00042 0h-.95267v.95268h.95267zm.26682-.001h-.95268v.95268h.95268zm.534 0v.95268h.95264v-.95268zm0-.53268h.95264v-.95268h-.95264zm-.534 0v-.95268h-.95268v.95268zm-.83037-.17844h4.37651v-1.905352h-4.37651zm.95268-.40581v-.54686h-1.90536v.54686zm-1.50091.95268h.54823v-1.90536h-.54823zm.95268-.40497v-.54771h-1.90536v.54771zm0 1.85936v-1.85936h-1.90536v1.85936zm0 1.2038v-1.2038h-1.90536v1.2038zm-1.49885.95268h.54617v-1.90536h-.54617zm.95268-.40543v-.54725h-1.90535v.54725zm-1.82803.95268h.87535v-1.90536h-.87535zm.95268-.40626v-.54642h-1.90535v.54642zm-1.82844.95268h.87576v-1.90536h-.87576zm.95268-.40491v-.54777h-1.90536v.54777zm-1.49884.95268h.54616v-1.90536h-.54616zm.95268-.40717v-.54551h-1.90536v.54551zm-.95378.95268h.0011v-1.90535h-.0011zm-.54589 0h.54589v-1.90535h-.54589zm-.54734 0h.54734v-1.90535h-.54734zm-.95268-1.60756v.65488h1.90536v-.65488zm.40562.95268h.54706v-1.90536h-.54706zm.95268 1.89206v-2.84474h-1.90536v2.84474zm-.40652-.9527h-.54616v1.9054h.54616zm.95268 1.6076v-.6549h-1.90536v.6549zm-.40444-.9527h-.54824v1.9053h.54824zm.95268 1.4997v-.547h-1.90536v.547zm-.40569-.9527h-.54699v1.9054h.54699zm.95268 1.3919v-.4392h-1.90536v.4392zm0 .6557v-.6557h-1.90536v.6557zm0 .5469v-.5469h-1.90536v.5469zm0 .4376v-.4376h-1.90536v.4376zm0 .0003v-.0003h-1.90536v.0003zm-.29621-.9526h-.65647v1.9053h.65647zm-.95268.9523v.0003h1.90536v-.0003zm1.39033-.9526h-.43765v1.9053h.43765zm-.95268.515v.4376h1.90536v-.4376zm.51503.9527h.43765v-1.9054h-.43765zm-.95268-1.4996v.5469h1.90536v-.5469zm1.39033-.9527h-.43765v1.9054h.43765zm-.95268.297v.6557h1.90536v-.6557zm1.49974-.9527h-.54706v1.9054h.54706zm-.95268.4049v.5478h1.90536v-.5478zm1.60877-.9526h-.65609v1.9053h.65609zm.95268 1.4998v-.5472h-1.90535v.5472zm-.515-.9527h-.43768v1.9054h.43768zm.95268 1.1509v-.1982h-1.90536v.1982zm.14144-.9527h-1.09412v1.9053h1.09412zm-.95268.515v.4377h1.90536v-.4377zm.40559.9527h.54709v-1.9054h-.54709zm-.95267-1.8068v.8541h1.90535v-.8541zm1.49968-.9527h-.54701v1.9054h.54701zm-.95268.4055v.5472h1.90536v-.5472zm1.4998-.9527h-.54712v1.9054h.54712zm-.95268.07776v.87494h1.90535v-.87494zm1.49884-.95267h-.54616v1.90531h.54616zm-.95268-.90809v1.86076h1.90539v-1.86076zm1.61089-.95268h-.65821v1.90536h.65821zm.9527 1.391v-.43832h-1.9054v.43832zm-.4057-.95268h-.547v1.90536h.547zm-.95264.40562v.54706h1.90534v-.54706zm.95154.95268h.0011v-1.90536h-.0011zm-.95264-1.391v.43832h1.90534v-.43832zm-.25147.95268h1.20411v-1.90536h-1.20411zm-.95268-2.15538v1.2027h1.90539v-1.2027zm1.60939-.95268h-.65671v1.90536h.65671zm-.95267-.14197v1.09465h1.90537v-1.09465zm3.14187-.95268h-2.1892v1.90535h2.1892zm-.9527.95248v.0002h1.9054v-.0002zm1.4986-.95268h-.5459v1.90535h.5459zm-.9527-1.45439v2.40707h1.9053v-2.40707zm.4068.95268h.5459v-1.90536h-.5459zm-.9527-1.49954v.54686h1.9054v-.54686zm-9.00411 6.20416h.54617v-1.90536h-.54617zm-.95268-2.15626v1.20358h1.90536v-1.20358zm.29621.95268h.65647v-1.90536h-.65647zm.95268 2.54851v-3.50119h-1.905358v3.50119zm-.40652-.95268h-.54616v1.90533h.54616zm.95268 1.39037v-.43769h-1.90536v.43769zm-.2962-.95268h-.65648v1.90534h.65648zm-.95268-1.78262v2.7353h1.90535v-2.7353zm9.81682-2.70253h-1.6412v1.90536h1.6412zm.9526 1.49974v-.54706h-1.9053v.54706zm-2.5938.95268h1.6412v-1.90536h-1.6412zm-.9527-1.49974v.54706h1.9054v-.54706zm-.67214-3.58997h-.00042v1.90536h.00042zm-.95268.95263v.00005h1.90536v-.00005zm1.75313-.95268h-.80045v1.90536h.80045zm.95269.95281v-.00013h-1.90537v.00013zm-.68592-.95268h-.26677v1.90536h.26677zm.95272 2.01994v-1.06726h-1.9054v1.06726zm-1.21954.95268h.26682v-1.90536h-.26682zm-.95268-.95375v.00107h1.90532v-.00107zm.95268-.95268h-.8004v1.90535h.8004zm.15228.95268v-.26582h-1.90536v.26582zm-.9531.68686h.00042v-1.90536h-.00042zm-.95267-1.75313v.80045h1.90535v-.80045zm1.21949 1.75213h.534v-1.90536h-.534zm-.41868-1.48536v.53268h1.90532v-.53268zm.41868.95268h.534v-1.90536h-.534zm.95268-.42v-.53268h-1.90536v.53268z" fill="#646e87" mask="url(#a)"></path></svg> </div> </div> </div> </footer> </div> </div> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/components/prism-core.min.js'></script> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js'></script> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/plugins/keep-markup/prism-keep-markup.min.js'></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10