我是Serilog的新手,我很难弄清楚如何使用上下文功能.当我运行下面的代码时,输出文件不包含报告ID.我缺少什么想法?
var logger = new LoggerConfiguration()
.WriteTo
.File(@"C:\Log.txt")
.CreateLogger()
.ForContext("Report ID", 10);
logger.Information("Test");
Run Code Online (Sandbox Code Playgroud) 我正在尝试将OpenTracing.Contrib.NetCore与Serilog 一起使用。我需要将自定义日志发送给Jaeger。现在,它仅在我使用默认记录器工厂时才有效Microsoft.Extensions.Logging.ILoggerFactory
我的创业公司:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSingleton<ITracer>(sp =>
{
var loggerFactory = sp.GetRequiredService<ILoggerFactory>();
string serviceName = sp.GetRequiredService<IHostingEnvironment>().ApplicationName;
var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
.WithType(ConstSampler.Type)
.WithParam(1);
var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
.WithAgentHost("localhost")
.WithAgentPort(6831);
var reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
.WithLogSpans(true)
.WithSender(senderConfiguration);
var tracer = (Tracer)new Configuration(serviceName, loggerFactory)
.WithSampler(samplerConfiguration)
.WithReporter(reporterConfiguration)
.GetTracer();
//GlobalTracer.Register(tracer);
return tracer;
});
services.AddOpenTracing();
}
Run Code Online (Sandbox Code Playgroud)
在控制器中的某个位置:
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
private readonly ILogger<ValuesController> _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
[HttpGet("{id}")] …Run Code Online (Sandbox Code Playgroud) 我们使用NLog或Serilog进行记录.我们正忙着将一个系统从ASP.NET移植到ASP.NET Core,后者内置了日志记录.
理想情况下,我们想放弃NLog,因为似乎不再需要它.
但是,内置日志记录是否等同于NLog?它缺少任何主要功能吗?继续使用NLog(或类似Serilog之类的东西)有什么意义吗?
我们在ASP.NET Core应用程序中有共同的BL类,它们位于ctor中:
Microsoft.Extensions.Logging.ILogger<Foo>
在ASP.NET Core中,ASP.NET的内部基础结构处理通过ILogger获取ILogger LoggerFactory.
我们现在想在控制台应用程序中重用这些BL类(用于异步作业),我们如何设置AutoFac和Serilog以注入不存在的Microsoft.Extensions.Logging.ILogger<T>环境LoggerFactory?
我将在 .net 标准 2.0 库中实现 Serilog。我正在寻找一种方法来选择每个日志行应使用哪个接收器。
假设我们在配置中定义了 2 个接收器(控制台和文件):
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File("c:\\temp\\SerilogTets.txt")
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
之后,我们将编写一条日志规则:
Log.Information("Hello, world!"); //<- how can we define which sink we want to use
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来定义应记录哪些接收器的这些行:
不依赖于它是什么日志级别。
先感谢您!
亲切的问候,库尔特
我在appsettings.json我的应用程序中配置了一个文件接收器。
它工作得很好,但现在我想添加一个表达式模板来格式化我的文件中的输出。
正如我所看到的,无法使用配置文件设置表达式模板。
如果这是不可能的,有没有办法对我的文件接收器使用内联配置,但将文件路径保留到配置文件中?
谢谢
我有一个记录器包装器,我想用以下配置perse注入serilog:
var logger = new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到一种正确的注册方式.我想要它作为单身人士.以上是实例.
我尝试注册上面的实例.没工作.我试过lambda,没有工作.
什么有用?任何人?
我正在尝试将WriteTo.RollingFile与Serilog一起使用,如下所示:
var log = new LoggerConfiguration().WriteTo.RollingFile(
@"F:\logs\log-{Date}.txt",
LogEventLevel.Debug).CreateLogger();
log.Information("this is a log test");
Run Code Online (Sandbox Code Playgroud)
我的理解是日志文件将根据日期创建和命名,并且它每天都会写入一个新文件,但是我在同一天为每个日志条目获取一个新的日志文件!如何配置Serilog每天写入一个新文件,理想情况下我每天只有一个日志文件?
是否有任何归档过程来删除超过7天的文件?
目前,当我{Timestamp}在outputTemplate中使用时,它似乎是由生成的DateTime.Now,因此具有DateTimeKind.Local风味,因为当我给它一个"o"说明符时,它产生类似于2016-02-12T09:51:34.4477761-08:00
对于上面的例子2016-02-12T17:51:34.4477761Z,我想要得到的是,本来可以生成Timestamp的DateTimeKind.Utc.
更新
它看起来实际上是DateTimeOffset在那里实例化,所以没有DateTimeKind生效,而是看起来底层DateTime总是如此DateTimeKind.Unspecified.MSDN注意到格式化DateTimeOffsetvs 时的行为有一些差异DateTime,具体来说:
"u" - 将DateTimeOffset值转换为UTC并使用格式yyyy-MM-dd HH:mm:ssZ输出.
转换正是我想要的,但我也需要分数.
我试图安装serilog,我收到错误
PM> Install-Package Serilog
Install-Package:'Serilog'已经
为'Microsoft.CSharp'定义了一个依赖项.在行:1 char:1
+ Install-Package Serilog
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:NotSpecified :( :) [Install-Package],出现InvalidOperationException
+ FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
Microsoft.CSharp 已在我的项目中引用
serilog ×10
c# ×7
.net ×3
asp.net-core ×3
autofac ×2
jaeger ×1
logging ×1
nlog ×1
opentracing ×1
sink ×1