如何将方法中的多个变量传递给 NLOG.config?

How can i pass multiple variables from a method to NLOG.config?

目前我在一个方法中有两个变量,

float processTime = processTime.ElapsedMilliseconds;
var rowsTotal = resultadoSQL.Rows.Count;

我想将这两个变量传递给NLog.config,所以我可以这样使用它们:

<target name="sql" xsi:type="File" fileName="C:\Users\Dev\Desktop\Framework\Logs\sql.txt" 
        layout="'Rows count:' (rowsTotal) 'Elapsed Time:' processTime"/>

显然布局中的语法错误,他的目的只是为了展示我想要实现的目标。 .txt 文件如下所示:

Rows count: 456 Elapsed Time: 87878

尝试

<target name="sql" xsi:type="File" fileName="C:\Users\Dev\Desktop\Framework\Logs\sql.txt" 
        layout="'Rows count:'${rowsTotal} 'Elapsed Time:' ${processTime}"/>

也许将目标布局更改为 ${message} 并执行此操作:

logger.Info($"'Rows count:' {rowsTotal} 'Elapsed Time:' {processTime}");

您还可以更高级地使用 NLog LogEvent 属性:

https://github.com/NLog/NLog/wiki/EventProperties-Layout-Renderer

如果使用 NLog 4.5,则可以使用结构化日志记录:

https://github.com/NLog/NLog/wiki/How-to-use-structured-logging

你也可以使用 NLog Fluent API:

https://github.com/NLog/NLog/wiki/Fluent-API

或者直接把属性写进NLog.LogEventInfo.Properties