我如何实现以下方法?
string BuildSerilogMessage(string messageTemplate, params object[] propertyValues);
Run Code Online (Sandbox Code Playgroud)
ILogger.Debug论点与etc接受的论点相同。
我想要这个的原因是因为我想在中间异常中保留模板/值,它也需要有单个字符串消息。它基本上是这样的:
// this exception is designed to be easily loggable by serilog
[Serializable]
public class StructuredException : Exception {
public string MessageTemplate { get; private set; }
public object[] PropertyValues { get; private set; }
public StructuredException(string messageTemplate, params object[] propertyValues)
: base(BuildMessage(messageTemplate, propertyValues))
{
MessageTemplate = messageTemplate;
PropertyValues = propertyValues;
}
public StructuredException(Exception inner, string messageTemplate, params object[] propertyValues)
: base(BuildMessage(messageTemplate, propertyValues), inner)
{
MessageTemplate = messageTemplate;
PropertyValues = propertyValues; …Run Code Online (Sandbox Code Playgroud) 我正在尝试连接我的接收器,似乎对于我的滚动文件接收器,我的调试消息没有被记录(仅信息及以上)。是我的配置错误吗?
<!-- Serilog Configuration -->
<add key="serilog:using:Email" value="Serilog.Sinks.Email" />
<!-- Configure Serilog Email Sink -->
<add key="serilog:write-to:Email" />
<add key="serilog:write-to:Email.mailServer" value="***" />
<add key="serilog:write-to:Email.toEmail" value="***" />
<add key="serilog:write-to:Email.fromEmail" value="***" />
<add key="serilog:write-to:Email.mailSubject" value="Comply360 Portal Endpoint (DEV)" />
<add key="serilog:write-to:Email.restrictedToMinimumLevel" value="Warning" />
<add key="serilog:write-to:Email.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] [{CorrelationId}] {Message}{NewLine}{Exception}" />
<!-- Configure Serilog RollingFile Sink -->
<add key="serilog:write-to:RollingFile" />
<add key="serilog:write-to:RollingFile.restrictedToMinimumLevel" value="Debug" />
<add key="serilog:write-to:RollingFile.pathFormat" value="C:\Logs\comply360-portal-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] [{CorrelationId}] {Message}{NewLine}{Exception}" />
Run Code Online (Sandbox Code Playgroud) 我正在使用 C# 在 ASP.NET MVC 中处理 Serilog。
我必须记录日志类型,一种用于管理员级别,一种用于用户级别。
我想创建一个名为“角色”的额外列,根据微软会员资格,包含 1 个管理员或 2 个用户。
我使用了这段代码:
string connectionString = ConfigurationManager.........;
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.MSSqlServer(connectionString, "Logs")
.Enrich.WithExceptionDetails()
.Enrich.With<HttpRequestIdEnricher>()
.Enrich.FromLogContext()
.CreateLogger();
Log.Information("Web4 starting");
Log.Information("log location: {0}", AppDomain.CurrentDomain.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)
我已经将该列添加到数据库中
创建列后如何写入?
我试图将日志从 .NET Core 应用程序写入 SQL Server 的性能影响降至最低。
过去,我将 SerilogFile水槽包裹在水槽内Async- 这极大地提高了性能。
在SQL Server的水槽文档说,它定期批处理日志条目和/或当batchPostingLimit已经达到。我找不到关于当它确实决定发出INSERT命令时会发生什么的任何信息。
它是否相对于调用的代码异步发生Logger.Log(...)?如果没有,将 SQL Server Serilog 接收器包装在 Async 中是否有意义?
我正在使用 asp.net core(website) 和 Serilog 进行日志记录。
安装的 Nuget 包是
Serilog
Serilog.AspNetCore
Serilog.Extensions.Logging
Serilog.Extensions.Logging.File
Serilog.Settings.Configuration
Serilog.Sinks.File
Serilog.Sinks.RollingFile
Microsoft.Extensions.Logging
Run Code Online (Sandbox Code Playgroud)
Main.cs 文件中的设置是:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((WebHostBuilderContext, configurationBuilder) =>
{
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
configurationBuilder.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true);
configurationBuilder.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, loggingBuilder) =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddSerilog();
})
.UseStartup<Startup>();
}
Run Code Online (Sandbox Code Playgroud)
什么工作:
在 Startup.cs 文件中,如果我编写以下代码,则会创建日志文件。在这里,我在代码本身中指定配置。
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
string logFilePath = Path.Combine(env.ContentRootPath, …Run Code Online (Sandbox Code Playgroud) 尝试为 Serilog 2.8.0(在 .NET 4.6.2 中)设置最低日志级别。日志记录工作正常,但不是覆盖功能。
这是我的Program.cs:
using System;
using LogTest1.Classes;
using Microsoft.Extensions.Configuration;
using Serilog;
using SomeLib;
namespace LogTest
{
internal class Program
{
private static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", false, true)
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Log.Verbose("Verbose");
Log.Debug("Debug");
Log.Information("Information");
Log.Warning("Warning");
Log.Error("Error");
Log.Fatal("Fatal");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
和appsettings.json文件:
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ],
"MinimumLevel": {
"Default": "Warning",
"Override": {
"LogTest": "Information"
}
},
"WriteTo": [
{ …Run Code Online (Sandbox Code Playgroud) 在这个应用程序中,我已经引入并设置了 Serilog,它适用于异常,并且我想将 Microsoft 的 Logger 与 Serilog 一起使用,但我似乎无法弄清楚如何在没有此错误的情况下将其 DI 到服务中 dotnet build.
我不确定我缺少什么让 ILogger 使用 Serilog 的实例?
错误dotnet build:
[13:56:21 FTL] Host terminated unexpectedly
System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'App.Services.MyService'.)
Run Code Online (Sandbox Code Playgroud)
服务依赖注入:
[13:56:21 FTL] Host terminated unexpectedly
System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Unable to resolve …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的 dot net core 项目中集成了 Serilog。它运行得非常好,但我使用了一个黑暗的主题,有些日志真的很难阅读。举个例子:
这就是我初始化 Serilog 的方式:
string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
LoggerConfiguration loggerConfig = new LoggerConfiguration();
if (environment == "Production")
loggerConfig.MinimumLevel.Information();
loggerConfig.MinimumLevel.Override("Microsoft.AspNetCore",
LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("Logs/app.log");
Run Code Online (Sandbox Code Playgroud)
有什么办法可以改变颜色,使黑色原木变白吗?
我有一个没有依赖注入的控制台应用程序,它使用 log4net。我正在尝试用 Serilog 替换 log4net。
这与 log4net 的设置方式很接近:
using log4net;
using log4net.Config;
using System;
using System.IO;
using System.Reflection;
namespace LoggingDemo.Log4Net
{
class Program
{
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
log.Debug("Starting up");
log.Debug("Shutting down");
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在其他类中,通过设置获取记录器 private static readonly ILog log = LogManager.GetLogger(typeof(Program));
Serilog 设置如下:
using Serilog;
using System;
namespace LoggingDemo.Serilog
{
class Program
{
static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration() …Run Code Online (Sandbox Code Playgroud) 我想将 Serilog 用于我的 .Net 5 Web Api 项目。我安装了软件包
并将 Program.cs 文件更改为
public sealed class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
CreateHostBuilder(args)
.Build()
.Run();
}
private static IHostBuilder CreateHostBuilder(string[] args)
=> Host
.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个用于测试目的的控制器
[ApiController]
[Route("[controller]")]
public sealed class TodosController : ControllerBase
{
[HttpGet("{todoId:Guid}")]
public IActionResult GetTodoById(Guid todoId) => Ok(todoId);
}
Run Code Online (Sandbox Code Playgroud)
使用此端点后,我可以在控制台中看到以下内容
[22:30:11 INF] Now listening on: https://localhost:5001
[22:30:11 INF] Now listening …Run Code Online (Sandbox Code Playgroud) serilog ×10
c# ×7
.net-core ×3
logging ×3
.net ×2
asp.net-core ×2
.net-4.0 ×1
asp.net ×1
asp.net-mvc ×1
log-level ×1
overriding ×1
sql-server ×1
themes ×1