如何修复无效的 URI:asp.net 核心问题中无法确定 URI 的格式
How to fix Invalid URI: The format of the URI could not be determined in asp.net core problem
我在我的 Asp.net 核心程序中使用 serilog 和 Seq,但我不断收到上述错误。不过我的 Seq 服务器是 运行。下面分别在appsetting.json
和startup.cs
中找到配置。
Appsetting.json
"Serilog": {
"Destructure": [
{
"Name": "With",
"Args": { "policy": "Sample.CustomPolicy, Sample" }
},
{
"Name": "ToMaximumDepth",
"Args": { "maximumDestructuringDepth": 4 }
},
{
"Name": "ToMaximumStringLength",
"Args": { "maximumStringLength": 100 }
},
{
"Name": "ToMaximumCollectionCount",
"Args": { "maximumCollectionCount": 10 }
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"MinimumLevel": "Debug",
"Properties": {
"Application": "Sample"
},
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.Console", "Serilog.Sinks.Seq", "Serilog.Sinks.Graylog" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": { "path": "Loggers/logs.txt" }
},
{
"Args": {
"serverUrl": "http://localhost:5341"
},
"Name": "Seq"
}
]
}
StartUp.cs
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddSeq("Seq");
});
对于loggingBuilder.AddSeq("Seq");
,您需要传递url而不是Seq
。
//
// Summary:
// Extends Microsoft.Extensions.Logging.ILoggerFactory with methods for configuring
// Seq logging.
public static class SeqLoggerExtensions
{
//
// Summary:
// Adds a Seq logger configured from the supplied configuration section.
//
// Parameters:
// loggerFactory:
// The logger factory.
//
// configuration:
// A configuration section with details of the Seq server connection.
//
// Returns:
// A logger factory to allow further configuration.
public static ILoggerFactory AddSeq(this ILoggerFactory loggerFactory, IConfigurationSection configuration);
//
// Summary:
// Adds a Seq logger.
//
// Parameters:
// loggerFactory:
// The logger factory.
//
// serverUrl:
// The Seq server URL; the default is http://localhost:5341.
//
// apiKey:
// A Seq API key to authenticate or tag messages from the logger.
//
// minimumLevel:
// The level below which events will be suppressed (the default is Microsoft.Extensions.Logging.LogLevel.Information).
//
// levelOverrides:
// A dictionary mapping logger name prefixes to minimum logging levels.
//
// Returns:
// A logger factory to allow further configuration.
public static ILoggerFactory AddSeq(this ILoggerFactory loggerFactory, string serverUrl = "http://localhost:5341", string apiKey = null, LogLevel minimumLevel = LogLevel.Information, IDictionary<string, LogLevel> levelOverrides = null);
//
// Summary:
// Adds a Seq logger.
//
// Parameters:
// loggingBuilder:
// The logging builder.
//
// serverUrl:
// The Seq server URL; the default is http://localhost:5341.
//
// apiKey:
// A Seq API key to authenticate or tag messages from the logger.
//
// Returns:
// A logging builder to allow further configuration.
public static ILoggingBuilder AddSeq(this ILoggingBuilder loggingBuilder, string serverUrl = "http://localhost:5341", string apiKey = null);
//
// Summary:
// Adds a Seq logger configured from the supplied configuration section.
//
// Parameters:
// loggingBuilder:
// The logging builder.
//
// configuration:
// A configuration section with details of the Seq server connection.
//
// Returns:
// A logging builder to allow further configuration.
public static ILoggingBuilder AddSeq(this ILoggingBuilder loggingBuilder, IConfigurationSection configuration);
}
如果要从 appsettings.json
传递配置,请将 appsettings.json
定义为
"Seq": {
"ServerUrl": "http://localhost:5341",
"ApiKey": "1234567890",
"MinimumLevel": "Trace",
"LevelOverride": {
"Microsoft": "Warning"
}
}
并使用 loggingBuilder.AddSeq(Configuration.GetSection("Seq"));
。
如果需要合并serilog
和Seq
,请参考Using Serilog。
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Seq("http://localhost:5341")
.CreateLogger();
我在我的 Asp.net 核心程序中使用 serilog 和 Seq,但我不断收到上述错误。不过我的 Seq 服务器是 运行。下面分别在appsetting.json
和startup.cs
中找到配置。
Appsetting.json
"Serilog": {
"Destructure": [
{
"Name": "With",
"Args": { "policy": "Sample.CustomPolicy, Sample" }
},
{
"Name": "ToMaximumDepth",
"Args": { "maximumDestructuringDepth": 4 }
},
{
"Name": "ToMaximumStringLength",
"Args": { "maximumStringLength": 100 }
},
{
"Name": "ToMaximumCollectionCount",
"Args": { "maximumCollectionCount": 10 }
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"MinimumLevel": "Debug",
"Properties": {
"Application": "Sample"
},
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.Console", "Serilog.Sinks.Seq", "Serilog.Sinks.Graylog" ],
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": { "path": "Loggers/logs.txt" }
},
{
"Args": {
"serverUrl": "http://localhost:5341"
},
"Name": "Seq"
}
]
}
StartUp.cs
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddSeq("Seq");
});
对于loggingBuilder.AddSeq("Seq");
,您需要传递url而不是Seq
。
//
// Summary:
// Extends Microsoft.Extensions.Logging.ILoggerFactory with methods for configuring
// Seq logging.
public static class SeqLoggerExtensions
{
//
// Summary:
// Adds a Seq logger configured from the supplied configuration section.
//
// Parameters:
// loggerFactory:
// The logger factory.
//
// configuration:
// A configuration section with details of the Seq server connection.
//
// Returns:
// A logger factory to allow further configuration.
public static ILoggerFactory AddSeq(this ILoggerFactory loggerFactory, IConfigurationSection configuration);
//
// Summary:
// Adds a Seq logger.
//
// Parameters:
// loggerFactory:
// The logger factory.
//
// serverUrl:
// The Seq server URL; the default is http://localhost:5341.
//
// apiKey:
// A Seq API key to authenticate or tag messages from the logger.
//
// minimumLevel:
// The level below which events will be suppressed (the default is Microsoft.Extensions.Logging.LogLevel.Information).
//
// levelOverrides:
// A dictionary mapping logger name prefixes to minimum logging levels.
//
// Returns:
// A logger factory to allow further configuration.
public static ILoggerFactory AddSeq(this ILoggerFactory loggerFactory, string serverUrl = "http://localhost:5341", string apiKey = null, LogLevel minimumLevel = LogLevel.Information, IDictionary<string, LogLevel> levelOverrides = null);
//
// Summary:
// Adds a Seq logger.
//
// Parameters:
// loggingBuilder:
// The logging builder.
//
// serverUrl:
// The Seq server URL; the default is http://localhost:5341.
//
// apiKey:
// A Seq API key to authenticate or tag messages from the logger.
//
// Returns:
// A logging builder to allow further configuration.
public static ILoggingBuilder AddSeq(this ILoggingBuilder loggingBuilder, string serverUrl = "http://localhost:5341", string apiKey = null);
//
// Summary:
// Adds a Seq logger configured from the supplied configuration section.
//
// Parameters:
// loggingBuilder:
// The logging builder.
//
// configuration:
// A configuration section with details of the Seq server connection.
//
// Returns:
// A logging builder to allow further configuration.
public static ILoggingBuilder AddSeq(this ILoggingBuilder loggingBuilder, IConfigurationSection configuration);
}
如果要从 appsettings.json
传递配置,请将 appsettings.json
定义为
"Seq": {
"ServerUrl": "http://localhost:5341",
"ApiKey": "1234567890",
"MinimumLevel": "Trace",
"LevelOverride": {
"Microsoft": "Warning"
}
}
并使用 loggingBuilder.AddSeq(Configuration.GetSection("Seq"));
。
如果需要合并serilog
和Seq
,请参考Using Serilog。
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Seq("http://localhost:5341")
.CreateLogger();