标签: serilog

Serilog:无法让滚动文件工作

场景:ASP.NET MVC 6 Web 应用程序。

这是导入的包project.json

"Serilog": "2.3.0",
"Serilog.Extensions.Logging": "1.3.1",
"Serilog.Sinks.RollingFile": "3.2.0",
"Serilog.Settings.Configuration":  "2.2.0"
Run Code Online (Sandbox Code Playgroud)

这里是appsettings配置

"Serilog": {
    "Using": [ "Serilog.Sinks.RollingFile" ],
    "MinimumLevel": {
        "Default": "Verbose",
        "Override": {
            "Microsoft": "Warning",
            "Microsoft.AspNetCore.Identity": "Debug",
            "System": "Warning"
        }
    },
    "WriteTo": [
        {
            "Name": "RollingFile",
            "Args": {
                "path": "logger-{Date}.log",
                "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}",
                "fileSizeLimitBytes": 16384
            }
        }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Properties": {
        "Application": "Sample"
    }
},
Run Code Online (Sandbox Code Playgroud)

这是Startup构造函数

var builder = new ConfigurationBuilder()
                  .SetBasePath( _environment.ContentRootPath …
Run Code Online (Sandbox Code Playgroud)

logging serilog asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
5749
查看次数

C# Serilog 仅在出错后收到电子邮件

我正在使用 Serilog 接收器Serilog.Sinks.Email。我收到了电子邮件。不幸的是也有“信息”。如果是警告错误或致命错误,我想先收到电子邮件。

有没有办法设置这个?“信息”不应再通过电子邮件发送。但是应该将信息重新写入 .txt 文件。我希望收到警告、错误或致命的电子邮件。

 Log.Logger = new LoggerConfiguration()
                            .WriteTo.RollingFile("logs\\log.txt")
                            .WriteTo.Email(
                            fromEmail: "LOG",
                            toEmail: "ghost-user@ghost.com",
                            mailServer: "exchange")
                            .CreateLogger();

    Log.Information("++ I'm starting logging ++");
    Log.Error("Only that should arrive in the e-mail");
Run Code Online (Sandbox Code Playgroud)

c# email sink serilog

3
推荐指数
1
解决办法
1754
查看次数

如何使用 Serilog 2 记录 Exception.data 键/值?

我们的旧日志框架 (.NET 4.5) 将迭代 Exception.data 并记录每个 Exception.data 键值。记录与当前异常相关的上下文道具非常好。有没有办法配置 Serilog 来记录 Exception.data 键值?

序列号 2

serilog

3
推荐指数
1
解决办法
713
查看次数

在 appsettings.json 中添加自定义的 JSON Formmter

我创建了一个自定义的 JSON Formatter,它扩展了 ITextFormatter 并尝试将它添加到 appsetting.json 中,如下所示:

"WriteTo": [
 {
    "Name": "Console",
    "Args": {
        "formatter": "CustomizedJSONFormatter"
       // "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
    }
  } 
]
Run Code Online (Sandbox Code Playgroud)

默认 jsonFormatter 工作正常,如注释行所示。但是如果我想添加自定义的,我会得到一个错误:InvalidCastException: Invalid cast from 'System.String' to 'Serilog.Formatting.ITextFormatter'。

有没有办法解决这个问题?

谢谢!

serilog

3
推荐指数
1
解决办法
2039
查看次数

ASP.Net Core 2 中的 Serilog JsonFormatter 未从 appsettings 文件中应用

我有一个 ASP.Net Core 2 Web 应用程序,我试图将 SeriLog 配置为以 JSON 格式输出,通过 appsettings.json 文件进行配置。我不能让它与标准 Serilog.Formatting.Json.JsonFormatter 或紧凑的 Serilog.Formatting.Compact.CompactJsonFormatter 一起使用。

我看到有一个类似的问题问在这里,但似乎是使用appsettings.json没有确凿的答案,而线程已经平静了一年多(我没有足够的信誉评论轻移进一步答复)。

我正在使用以下 SeriLog 包:

  • Serilog.AspNetCore - 2.1.0
  • Serilog.Enrichers.Environment - 2.1.2
  • Serilog.Enrichers.Thread - 3.0.0
  • Serilog.Formatting.Compact - 1.0.0
  • Serilog.Settings.Configuration - 2.4.0
  • Serilog.Sinks.RollingFile - 3.3.0

我的 appsettings.json 文件的 SeriLog 部分显示:

"Serilog": {
  "Using": ["Serilog.Sinks.RollingFile"],
  "MinimumLevel": {
    "Default": "Verbose",
    "Override": {
      "Microsoft": "Warning",
      "System": "Warning"
    }
  },
  "WriteTo": [
    {
      "Name": "RollingFile",
      "Args": {
        "pathFormat": "C:\\Logs\\MLSBPortal-{Date}.txt",
        "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
        "restrictedToMinimumLevel": "Debug",
        "retainedFileCountLimit": "10",
        "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff …
Run Code Online (Sandbox Code Playgroud)

c# serilog .net-core asp.net-core-2.0

3
推荐指数
1
解决办法
4442
查看次数

将 Serilog 与 Azure 日志流结合使用

我一直在研究如何使用 Serilog 写入 Azure 日志流。我也在这里找到了一些答案;例如,一个答案是建议登录到特定文件夹 ( home\LogFiles\http\...)中的文件,但它似乎对我不起作用。

我尝试使用跟踪调试接收器,但在 Azure 日志流中看不到我的消息。

让我更困惑的是,即使使用System.Diagnostics.DebugSystem.Diagnostics.Trace也不起作用。

所以,也许有两个问题:

  • 一般来说,我应该如何写入 Azure 日志流?
  • 是否可以在写入日志流的同时使用 Serilog 基础设施?

不用说,我在 Azure 应用服务中启用了“诊断日志”。

任何帮助真的很感激,

谢谢

c# azure serilog asp.net-core-2.0

3
推荐指数
1
解决办法
1496
查看次数

使用 aspnet 核心排除特定端点 serilog 日志记录

我们有一个 aspnetcore 应用程序,我们有一个健康检查,每 x 秒向一个端点发出请求。我们的 API 使用 serilog,日志级别信息记录对 API 的每个请求。

我的问题是:我们如何过滤以从对特定端点发出的日志请求中排除?

举个例子,这是我们今天的日志代码:

        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                .Enrich.FromLogContext()                    
                .Filter.ByExcluding(c => c.MessageTemplate.Text.Contains("Request"))
                .WriteTo.Console()
                .WriteTo.RollingFile(hostingContext.Configuration["log-path"]))                    
            .Build();
Run Code Online (Sandbox Code Playgroud)

今天我们只能过滤所有请求。我们如何过滤特定的端点请求?

serilog .net-core asp.net-core

3
推荐指数
1
解决办法
3740
查看次数

Serilog MSSQL Sink 不会将日志写入数据库

我创建了一个 .Net 类库 (4.6.2) 并创建了由其他接口(如控制台应用程序)调用的 serilog 实现。现在,当我使用文件接收器类型时,日志被写入文件,但使用 MSSQL 接收器,它没有这样做。使用 autoCreateTable 选项提供的列选项创建日志表

ILogger logger = new LoggerConfiguration()
      .WriteTo.MSSqlServer(connectionString,
                           tableName,
                           autoCreateSqlTable: autoCreateSqlTable,
                           restrictedToMinimumLevel: LogEventLevel.Verbose,
                           columnOptions: GetSQLSinkColumnOptions(),
                           batchPostingLimit: batchPostingLimit)          
      .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我还启用了 serilog 的自我记录,但没有显示任何异常。没有找到任何有用的解决方案。

然而,日志表正在生成。我已经检查了用户的权限,并且也有正确的权限。

下面是代码的快照。

public static class GenericLogger
{

    private static ILogger _usageLogger;
    private static ILogger _errorLogger;

    static GenericLogger()
    {
        var logTypes = LogConfigurationHelper.GetLogTypes();
        if (logTypes != null && logTypes.Count > 0)
        {
            foreach (var logType in logTypes)
            {
                ConfigureLogger(logType.Id); // Intitalizes logs based on  
//configuration.


            }
        }

        Serilog.Debugging.SelfLog.Enable(msg =>
        {
            Debug.Print(msg); …
Run Code Online (Sandbox Code Playgroud)

c# serilog

3
推荐指数
1
解决办法
4574
查看次数

发布 ASP.NET 核心时 Serilog 不记录

我将 Serilog 配置为在具有 ASP.NET 核心(运行 Core 2.1)的 WebApi 上写入 MSSQL 表和文件(以尝试确定发生了什么)。

startup.cs按如下方式添加 Serilog 日志;

public async void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    var log = new LoggerConfiguration()
        .MinimumLevel.Verbose()
        .WriteTo.MSSqlServer(
            DbGlobals.DevDatabase, "Logs", schemaName:DbGlobals.SchemaName)
        .WriteTo.File("Logs\\Serilog\\log.txt", rollingInterval: RollingInterval.Day)
        .CreateLogger();

    loggerFactory.AddSerilog(log);
Run Code Online (Sandbox Code Playgroud)

其中DbGlobals.DevDatbaseDbglobals.SchemaName是从配置中读取的字符串。

更新作为参考,这些值是;

DbGlobals.Schema = "MySchema";
DbGlobals.DevDatabase = "Data Source=xx.xx.xx.xx;Initial Catalog=DevDatabase;Integrated Security=False;Persist Security Info=False;User ID=LOGIN;Password=PASSWORD;MultipleActiveResultSets=true;";
Run Code Online (Sandbox Code Playgroud)

当使用 IIS Express 在本地运行并在两者debugrelease配置下运行时,两个日志记录功能都可以正常工作。例如在我的控制器中;

public class ReviewPublicController : Controller
{
    private readonly IReviewService _service;
    private readonly IMapper …
Run Code Online (Sandbox Code Playgroud)

c# serilog asp.net-core-webapi asp.net-core-2.1

3
推荐指数
1
解决办法
8533
查看次数

在 ASP.NET MVC 项目中使用 Serilog

今天在工作中,我被要求在我现有的 ASP.NET MVC(不是 Core)项目中添加一些基本的日志记录功能。我被告知为此使用 Serilog。

但是,我没有找到任何合理的在 MVC 中使用 Serilog 的例子,所有链接都简单地引用了 Core。我试图自己做所有事情。安装所有必要的包(Serilog、Serilog.Sinks.File)后,我创建了一个“Logs”文件夹并尝试了这个:

var log = new LoggerConfiguration()
  .WriteTo.File("~/Logs/log.txt")
  .CreateLogger();

log.Information("Hello from Serilog!");
Run Code Online (Sandbox Code Playgroud)

我希望在文件夹中看到一个新文件,但没有。我还尝试使用更简单的路径“log.txt”并抢先在此文件夹中创建一个文件,但没有帮助。

MVC 是否可能根本不支持 Serilog?如果是,将某些内容记录到文本文件中的简单方法是什么?

c# asp.net asp.net-mvc logging serilog

3
推荐指数
1
解决办法
5800
查看次数