{"id":13601201,"url":"https://github.com/serilog-contrib/Serilog.Sinks.Network","last_synced_at":"2025-04-11T01:31:11.859Z","repository":{"id":37097001,"uuid":"72579462","full_name":"serilog-contrib/Serilog.Sinks.Network","owner":"serilog-contrib","description":"A serilog network sink. Designed with logstash and the Elastic stack in mind","archived":false,"fork":false,"pushed_at":"2025-03-31T11:52:36.000Z","size":4566,"stargazers_count":18,"open_issues_count":10,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T16:39:42.077Z","etag":null,"topics":["dotnet","dotnet-standard","elasticstack","elk","serilog-sink"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serilog-contrib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-01T21:45:51.000Z","updated_at":"2025-03-31T11:49:02.000Z","dependencies_parsed_at":"2024-11-07T03:38:43.246Z","dependency_job_id":"0d3f99a9-c7b8-41f9-81c0-6934ce0ba590","html_url":"https://github.com/serilog-contrib/Serilog.Sinks.Network","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serilog-contrib%2FSerilog.Sinks.Network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serilog-contrib%2FSerilog.Sinks.Network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serilog-contrib%2FSerilog.Sinks.Network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serilog-contrib%2FSerilog.Sinks.Network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serilog-contrib","download_url":"https://codeload.github.com/serilog-contrib/Serilog.Sinks.Network/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713253,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","dotnet-standard","elasticstack","elk","serilog-sink"],"created_at":"2024-08-01T18:00:58.247Z","updated_at":"2025-04-11T01:31:06.849Z","avatar_url":"https://github.com/serilog-contrib.png","language":"C#","funding_links":[],"categories":["C# #"],"sub_categories":[],"readme":"# Serilog Network Sink\r\n\r\n[![Build status](https://ci.appveyor.com/api/projects/status/dw7y9d3q9ty7cm5h?svg=true)](https://ci.appveyor.com/project/pauldambra/serilog-sinks-network)\r\n\r\nWrites the JSON output from serilog log event to either UDP or TCP\r\n\r\n# Versions\r\n\r\nSerilog Network Sink is targeted **NetStandard 1.3** from version 2.x. It can be used for **.NET Core** based projects.\r\n\r\n1.x versions are still targeted to standard .Net Framework 4.5\r\n\r\n# Usage\r\n\r\nSet up to log via TCP\r\n\r\n```csharp\r\nvar ip = IPAddress.Parse(\"1.3.3.7\");\r\nvar log = new LoggerConfiguration()\r\n    .WriteTo.TCPSink(ip, 1337)\r\n    .CreateLogger();\r\n\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.TCPSink(\"some.url.com\", 1337)\r\n    .CreateLogger();\r\n\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.TCPSink(\"tls://some.fqdn.com:12435\")\r\n    .CreateLogger();\r\n\r\n// you can provide any specific formatter ...\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.TCPSink(\"tls://some.fqdn.com:12435\", new RawFormatter())\r\n    .CreateLogger();\r\n\r\n// ... otherwise this will use the default provided LogstashJsonFormatter (described below)\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.TCPSink(\"tls://some.fqdn.com:12435\")\r\n    .CreateLogger();\r\n\r\n```\r\n\r\nOr maybe UDP\r\n\r\n```csharp\r\nvar ip = IPAddress.Parse(\"1.3.3.7\");\r\nvar log = new LoggerConfiguration()\r\n    .WriteTo.UDPSink(ip, 1337)\r\n    .CreateLogger();\r\n\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.UDPSink(\"some.url.com\", 1337)\r\n    .CreateLogger();\r\n\r\n// you can provide any specific formatter for UDP too ...\r\nvar urlLogger = new LoggerConfiguration()\r\n    .WriteTo.UDPSink(\"some.url.com\", 1337, new RawFormatter())\r\n    .CreateLogger();\r\n\r\n```\r\n\r\n# Configure from the config file\r\n\r\n```\r\n\u003cadd key=\"serilog:minimum-level\" value=\"Verbose\" /\u003e\r\n\u003cadd key=\"serilog:using:TCPSink\" value=\"Serilog.Sinks.Network\" /\u003e\r\n\u003cadd key=\"serilog:write-to:TCPSink.uri\" value=\"192.165.25.55\" /\u003e\r\n\u003cadd key=\"serilog:write-to:TCPSink.port\" value=\"3251\" /\u003e\r\n```\r\n\r\n# JSON structure (LogstashJsonFormatter)\r\n\r\nSerilog log JSON tends to look like this:\r\n\r\n```\r\n{\r\n  \"Timestamp\": \"2016-11-03T16:28:55.0094294+00:00\",\r\n  \"Level\": \"Information\",\r\n  \"MessageTemplate\": \"ping: {ping} and pong: {pong}\",\r\n  \"message\": \"ping: 972 and pong: 973\",\r\n  \"Properties\": {\r\n    \"ping\": 972,\r\n    \"pong\": 973,\r\n    \"application\": \"ping ponger\",\r\n    \"type\": \"example\",\r\n    \"environment\": \"production\"\r\n  }\r\n}\r\n\r\n```\r\nThe LogstashJsonFormatter flattens that structure so it is more likely to fit into an existing logstash infrastructure.\r\n\r\n```\r\n\r\n{\r\n  \"timestamp\": \"2016-11-03T16:28:55.0094294+00:00\",\r\n  \"level\": \"Information\",\r\n  \"message\": \"ping: 972 and pong: 973\",\r\n  \"ping\": 972,\r\n  \"pong\": 973,\r\n  \"application\": \"ping ponger\",\r\n  \"type\": \"example\",\r\n  \"environment\": \"production\",\r\n}\r\n\r\n```\r\n\r\n# Acknowledgements\r\n\r\nAdapted from [Serilog Splunk Sink](https://github.com/serilog/serilog-sinks-splunk) and [Splunk .Net Logging](https://github.com/splunk/splunk-library-dotnetlogging) both Apache 2.0 licensed\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserilog-contrib%2FSerilog.Sinks.Network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserilog-contrib%2FSerilog.Sinks.Network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserilog-contrib%2FSerilog.Sinks.Network/lists"}