<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo" -->

---
title: Serilog Sinks: Console, File, Seq, and More | daily.dev
description: Serilog sinks are output destinations for log events in .NET applications. This guide covers configuring the most important sinks: Console (with plain text and...
canonical: https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Serilog Sinks: Console, File, Seq, and More | daily.dev
og:description: Serilog sinks are output destinations for log events in .NET applications. This guide covers configuring the most important sinks: Console (with plain text and...
og:url: https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo
og:image: https://api.daily.dev/og/posts/k2dUx4Zvo.png
og:image:alt: Serilog Sinks: Console, File, Seq, and More
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Serilog Sinks: Console, File, Seq, and More

**[We Are .NET](https://daily.dev/sources/wearedotnet)** · 10 min read · 2 upvotes · 0 comments

## Summary

Serilog sinks are output destinations for log events in .NET applications. This guide covers configuring the most important sinks: Console (with plain text and JSON output via CompactJsonFormatter), rolling File sink (daily, size-based, or combined), and Seq for structured log querying in development. It also explains per-sink level filtering, sub-loggers for advanced routing, async sink wrapping for production performance, and production-ready sinks for Azure (Application Insights), Elasticsearch/OpenSearch, and SQL Server. A complete appsettings.json example shows combining multiple sinks with different minimum levels for container and file output.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.devleader.ca/2026/07/09/serilog-sinks-console-file-seq-and-more>

## Questions this post answers

### How do I write different log levels to different Serilog sinks?

Use the restrictedToMinimumLevel option on each sink independently. For example, configure Console with restrictedToMinimumLevel Debug to capture everything, File with restrictedToMinimumLevel Warning to only persist warnings and errors, and Seq with restrictedToMinimumLevel Information. Every event meeting a sink's threshold is delivered to that sink regardless of what other sinks receive.

_Developers wiring up multi-sink logging pipelines can find configuration patterns like this through daily.dev._

### Should I wrap Serilog sinks in the async adapter for production?

Yes, for any sink involving network I/O such as Seq, Elasticsearch, or Azure Monitor, since synchronous writes could block the request thread. Wrap sinks with WriteTo.Async, setting a bufferSize (e.g. 10,000) and blockWhenFull to false so events drop under load rather than adding latency, or true for compliance-critical logging where dropped events are unacceptable.

_Teams tuning logging performance under load can track patterns like async sink wrapping via daily.dev._

### What is CompactJsonFormatter in Serilog and why use it?

CompactJsonFormatter, from the Serilog.Formatting.Compact package, renders each log event as a single-line JSON object implementing the Compact Log Event Format (CLEF), a standard also supported by Seq and other log aggregators. Fields include @t for timestamp, @mt for the message template, and @l for level, with custom properties appearing as top-level JSON fields for easy parsing by tools like Fluent Bit or Logstash.

_Developers choosing a log format for container aggregators can compare options like this on daily.dev._

## Similar posts on daily.dev

- [NLog Targets in .NET: File, Database, Console, and Custom](https://daily.dev/posts/nlog-targets-in-net-file-database-console-and-custom-pnjiuip49) · We Are .NET · 1 upvotes · 0 comments
- [Structured Logging Patterns That Actually Survive Production — Daily DevOps & .NET](https://daily.dev/posts/structured-logging-patterns-that-actually-survive-production-daily-devops-net-lphiux5cy) · Daily DevOps & .NET · 6 upvotes · 0 comments
- [Structured Logging in .NET with Serilog and ClickHouse](https://daily.dev/posts/structured-logging-in-net-with-serilog-and-clickhouse-xwwes1xel) · ClickHouse · 12 upvotes · 1 comments
- [Beyond Console.WriteLine: Mastering Structured Logging in .NET](https://daily.dev/posts/beyond-console-writeline-mastering-structured-logging-in-net-hgcoz2ses) · ITNEXT · 10 upvotes · 0 comments
- [Heroku logs: A complete guide for developers](https://daily.dev/posts/heroku-logs-a-complete-guide-for-developers-ctuuwonqf) · Honeybadger · 0 upvotes · 0 comments

---

Tags: [#.net](https://daily.dev/tags/.net), [#c#](https://daily.dev/tags/c#)

[View this post on daily.dev](https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Serilog Sinks: Console, File, Seq, and More","url":"https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo"},"datePublished":"2026-07-09T13:53:51.578Z","dateModified":"2026-09-13T19:03:02.765Z","description":"Serilog sinks are output destinations for log events in .NET applications. This guide covers configuring the most important sinks: Console (with plain text and...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ecda30f7e3b2b1b7f14aa00e67694100?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ecda30f7e3b2b1b7f14aa00e67694100?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"We Are .NET","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"We Are .NET","logo":"https://media.daily.dev/image/upload/s--BsnVOa3i--/f_auto/v1718347410/logos/wearedotnet","url":"https://daily.dev/sources/wearedotnet"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":".net,c#","timeRequired":"PT10M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"We Are .NET","item":"https://daily.dev/sources/wearedotnet"},{"@type":"ListItem","position":3,"name":"Serilog Sinks: Console, File, Seq, and More"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/serilog-sinks-console-file-seq-and-more-k2dux4zvo#faq","mainEntity":[{"@type":"Question","name":"How do I write different log levels to different Serilog sinks?","acceptedAnswer":{"@type":"Answer","text":"Use the restrictedToMinimumLevel option on each sink independently. For example, configure Console with restrictedToMinimumLevel Debug to capture everything, File with restrictedToMinimumLevel Warning to only persist warnings and errors, and Seq with restrictedToMinimumLevel Information. Every event meeting a sink's threshold is delivered to that sink regardless of what other sinks receive. Developers wiring up multi-sink logging pipelines can find configuration patterns like this through daily.dev."}},{"@type":"Question","name":"Should I wrap Serilog sinks in the async adapter for production?","acceptedAnswer":{"@type":"Answer","text":"Yes, for any sink involving network I/O such as Seq, Elasticsearch, or Azure Monitor, since synchronous writes could block the request thread. Wrap sinks with WriteTo.Async, setting a bufferSize (e.g. 10,000) and blockWhenFull to false so events drop under load rather than adding latency, or true for compliance-critical logging where dropped events are unacceptable. Teams tuning logging performance under load can track patterns like async sink wrapping via daily.dev."}},{"@type":"Question","name":"What is CompactJsonFormatter in Serilog and why use it?","acceptedAnswer":{"@type":"Answer","text":"CompactJsonFormatter, from the Serilog.Formatting.Compact package, renders each log event as a single-line JSON object implementing the Compact Log Event Format (CLEF), a standard also supported by Seq and other log aggregators. Fields include @t for timestamp, @mt for the message template, and @l for level, with custom properties appearing as top-level JSON fields for easy parsing by tools like Fluent Bit or Logstash. Developers choosing a log format for container aggregators can compare options like this on daily.dev."}}]}
```

