作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!