我最近将日志记录添加到了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)
这导致将名称空间和类添加到日志中,现在仅缺少该方法