标签: serilog

如何使用Serilog ForContext

我是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)

.net logging serilog

13
推荐指数
1
解决办法
1万
查看次数

OpenTracing不会使用Serilog发送日志

我正在尝试将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)

c# serilog asp.net-core opentracing jaeger

13
推荐指数
1
解决办法
543
查看次数

ASP.NET Core的内置日志记录是否使NLog/Serilog/etc过时?

我们使用NLog或Serilog进行记录.我们正忙着将一个系统从ASP.NET移植到ASP.NET Core,后者内置了日志记录.

理想情况下,我们想放弃NLog,因为似乎不再需要它.

但是,内置日志记录是否等同于NLog?它缺少任何主要功能吗?继续使用NLog(或类似Serilog之类的东西)有什么意义吗?

c# nlog serilog asp.net-core-mvc asp.net-core

12
推荐指数
2
解决办法
2885
查看次数

如何使用Serilog和AutoFac在控制台应用程序中获取Microsoft.Extensions.Logging <T>?

我们在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

c# dependency-injection autofac serilog asp.net-core

12
推荐指数
1
解决办法
1万
查看次数

Serilog :选择在运行时记录哪个接收器

我将在 .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)

我正在寻找一种方法来定义应记录哪些接收器的这些行:

  • 控制台和文件
  • 仅控制台
  • 仅文件

不依赖于它是什么日志级别。

先感谢您!

亲切的问候,库尔特

c# sink serilog .net-standard

12
推荐指数
1
解决办法
6684
查看次数

如何在 Serilog 中将表达式模板与 appSettings 结合使用

我在appsettings.json我的应用程序中配置了一个文件接收器。
它工作得很好,但现在我想添加一个表达式模板来格式化我的文件中的输出。
正如我所看到的,无法使用配置文件设置表达式模板。
如果这是不可能的,有没有办法对我的文件接收器使用内联配置,但将文件路径保留到配置文件中?

谢谢

c# configuration serilog

12
推荐指数
1
解决办法
6025
查看次数

Serilog与Autofac

我有一个记录器包装器,我想用以下配置perse注入serilog:

var logger = new LoggerConfiguration()
   .WriteTo.RollingFile(
      AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
   .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到一种正确的注册方式.我想要它作为单身人士.以上是实例.

我尝试注册上面的实例.没工作.我试过lambda,没有工作.

什么有用?任何人?

c# autofac serilog

11
推荐指数
1
解决办法
5953
查看次数

Serilog RollingFile

我正在尝试将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天的文件?

.net c# serilog

11
推荐指数
5
解决办法
2万
查看次数

是否可以将输出模板中的Timestamp作为DateTimeKind.Utc?

目前,当我{Timestamp}在outputTemplate中使用时,它似乎是由生成的DateTime.Now,因此具有DateTimeKind.Local风味,因为当我给它一个"o"说明符时,它产生类似于2016-02-12T09:51:34.4477761-08:00

对于上面的例子2016-02-12T17:51:34.4477761Z,我想要得到的是,本来可以生成TimestampDateTimeKind.Utc.

更新

它看起来实际上是DateTimeOffset在那里实例化,所以没有DateTimeKind生效,而是看起来底层DateTime总是如此DateTimeKind.Unspecified.MSDN注意到格式化DateTimeOffsetvs 时的行为有一些差异DateTime,具体来说:

"u" - 将DateTimeOffset值转换为UTC并使用格式yyyy-MM-dd HH:mm:ssZ输出.

转换正是我想要的,但我也需要分数.

.net serilog

11
推荐指数
1
解决办法
1045
查看次数

'Serilog'已经为'Microsoft.CSharp'定义了一个依赖项

我试图安装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 rollingfilesink

11
推荐指数
1
解决办法
5447
查看次数