enums - Nlog 枚举到整数

标签 enums nlog

我正在使用 NLog 并将事件记录到 SQL 服务器。记录的字段之一是日志级别,它被记录为字符串、“信息”、“警告”等。我还想将级别记录为整数值,以便在查看日志事件时提供更好的排序一个图形用户界面。

是否可以在不编写自定义布局渲染器的情况下将枚举转换为整数以插入到数据库中?

将级别作为字符串记录到数据库中的配置行是

<parameter name="@Level" layout="${level}"/>

理想情况下可能会转换为整数,例如;

<parameter name="@LevelId" layout="${level:format=tointeger}"/>

很像有一个 format=tostring 转换器。

最佳答案

另一种选择是在插入语句中将字符串转换为整数,如下所示:

<target name="database" xsi:type="Database" connectionStringName="MyConnectionStringName" useTransactions="true">
  <commandText>
    <![CDATA[
    INSERT INTO [dbo].LogEvent
      (Time,
       LogLevel,
       Title,
       Message,
       ExceptionDetails)
    VALUES
      (@Time,
       CASE @Level
       WHEN 'Trace' THEN 0
       WHEN 'Debug' THEN 1
       WHEN 'Info' THEN 2
       WHEN 'Warn' THEN 3
       WHEN 'Error' THEN 4
       WHEN 'Fatal' THEN 5
       ELSE NULL
       END,
       @Title,
       @Message,
       @ExceptionDetails)
    ]]>
  </commandText>
  <parameter name="@Time" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff}" />
  <parameter name="@Level" layout="${level}" />
  <parameter name="@Title" layout="${ndc}" />
  <parameter name="@Message" layout="${message}" />
  <parameter name="@ExceptionDetails" layout="${exception:format=tostring}" />
</target>

关于enums - Nlog 枚举到整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358712/

相关文章:

swift - 如何将枚举集成到 propertyWrapped UserDefault 中

java - 根据参数设置 boolean 条件

azure - 为什么 NLog 到 Azure Blob 存储不起作用?

c# - 建议设计: almost every object in app has loggger

c# - 如何将适用于整数的通用表达式树代码应用于枚举(例如,如何使 Expression.PostIncrementAssign() 适用于枚举?)?

c# - 从数据库中获取整数值并将其转换为 Enum

.net-core - 如何在 appsettings.json 中为 NLog 日志记录规则指定多个过滤器

docker - 使用 AspNetCore Api 设置 NLog 并使用 Docker 进行调试会持续抛出找不到文件错误

c# - 如何使用枚举值的自定义字符串格式设置枚举绑定(bind)组合框?

c# - 使用NLog时执行错误