相关疑难解决方法(0)

带有类名、方法名的 Serilog 日志记录

我在我的项目 Angular、web api、EF 中使用了 serilog 和 SEQ。我对两者都是新手。

1) 如何确保每次我写错误、信息、调试时都应该包含 ClassName.Method Name。我知道我必须创建 Enrich 但不确定如何获取 ClassName.Method Name

例如

Class Test
{
  public void testing(){
  // logger.Error("Error ....");}
}
Run Code Online (Sandbox Code Playgroud)

现在,当我看到日志时,它应该显示“29/09/2012 10:00:00, Test=>testing Error .....”

在,短 DateTime、ClassName、MethodName 和 Message

logging serilog

6
推荐指数
1
解决办法
4896
查看次数

C#ASP.NET Core Serilog添加类名称和方法进行记录

我最近将日志记录添加到了ASP.Net Core项目中。当前,日志以以下格式写入.txt文件:

{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] {消息} {NewLine} {Exception}

例如:

2017-11-30 13:58:22.229 +01:00 [信息]在数据库中创建的项目。

很好,但是我想输入要记录到该.txt文件的类的名称和方法。例如,当类A使用方法B向数据库中写入一些内容并将其记录下来时,我希望看到类似

ClassA.MethodB:在数据库中创建的项目

所有记录日志的类都将其Logger注入到其构造函数中,例如

public class ClassA
{
    private readonly ILogger _log;

    public ClassA(ILogger<ClassA> log){
        _log = log;
    }

    public void AddItemToDb(Item item){
        //Add item
        //On success: 
        _log.LogInfo("Added item to db.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我当前正在使用Serilog并使用以下LoggerConfiguration:

var logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
    .WriteTo.RollingFile(Configuration.GetValue<string>("LogFilePath") + "-{Date}.txt", LogEventLevel.Information)
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

如何将类和方法添加到日志中?

编辑

我向.WriteTo.Rollingfile()方法添加了一个自定义outputTemplate,如下所示:

"{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level}] ({SourceContext}) {Message}{NewLine}{Exception}")
Run Code Online (Sandbox Code Playgroud)

这导致将名称空间和类添加到日志中,现在仅缺少该方法

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

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

如何从logevent获取格式化的输出

在WriteTo.Observer方法中,我想传递格式化日志消息,因为它是使用格式化模板呈现的。我该怎么做?谢谢

class Program
{
    static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Information()
            .WriteTo.LiterateConsole()
            .WriteTo.RollingFile("log-{Date}.txt")
            .WriteTo.Observers(events => events.Do(evt => { Console.WriteLine($"Observed event {evt.MessageTemplate.Text}"); }).Subscribe())
            .WriteTo.Observers(events => events.Do(evt => { LogHandler(evt.MessageTemplate.Text);}).Subscribe())
            .CreateLogger();

        Log.Logger.Information("Log msg from Main");
        Console.ReadLine();
    }

    public static void LogHandler(string logMsg)
    {
        Console.WriteLine("LogHandler: " + logMsg); //I want the complete formatted log message as it would appear in a file i.e. "[10:20:14 INF] Log msg from DoNothing"
    }
}
Run Code Online (Sandbox Code Playgroud)

serilog

2
推荐指数
1
解决办法
1861
查看次数

标签 统计

serilog ×3

logging ×2

asp.net ×1

asp.net-core ×1

c# ×1