我已实现 logging
在我的 WPF 应用程序中使用 Serilog
.我希望生成的输出位于 Excel
格式。
我想要 excel
文件有这些 column headers
如下所述,以便我可以 sort
通过申请 filters
.
date time| logtype |environment| app build version | test case description | status
sample
output
应该如下所示date time | logtype |environment| app build version| test case description | status
02-04-2020 4:30 | Test Reults|aBC06 |2.0.150 | Loading Views | Success
我有以下
logging
配置 public class LoggerFactory : ILoggerFactory
{
public Serilog.Core.Logger Create()
{
var logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.CreateLogger();
return logger;
}
}
AppSettings
有这个配置<add key="serilog:using:Seq" value="Serilog.Sinks.Seq" />
<add key="serilog:using:RollingFile" value="Serilog.Sinks.RollingFile" />
<add key="serilog:write-to:RollingFile.pathFormat" value="C:\Dev\Logs\abc-ui-automation-{Date}.txt" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />
<add key="serilog:write-to:Seq.serverUrl" value="http://localhost:5341" />
目前,
logger
正在写 txt
没有上述格式的文件。我如何确保完成上述任务?
最佳答案
最简单的解决方案是将数据记录为 CSV,然后用 excel 打开它。因此,您可以简单地实现您自己的 ITextFormatter 版本。 .检查默认实现,如 RawFormatter看看如何。
您只需要编写自己的实现,例如
public void Format(LogEvent logEvent, TextWriter output)
{
output.write(logEvent.Timestamp.ToString("dd-MM-yyyy H:mm");
output.write(";");
output.write(logEvent.Level);
output.write(";");
output.write(logEvent.Properties["KEY"]);
output.write(";");
//...
output.WriteLine();
}
要编写标题,您可以使用 Serilog.Sinks.File.Header包裹。基本上它可以像
Func<string> headerFactory = () => "date time;logtype;...";
Log.Logger = new LoggerConfiguration()
.WriteTo.File(new YourCsvFormatter(), "log.csv", hooks: new HeaderWriter(headerFactory))
.CreateLogger();
关于c# - 使用 Serilog for .NET 将日志写入 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60990672/