c# - NLog 自定义日志级别值

标签 c# nlog

我有一个数据库,我正在尝试将消息写入其中并想使用 ${level} 布局,但我需要将其转换为 int 值以引用我自己的存储日志记录级别的表。是否可以在配置中将级别转换为我的枚举?还有其他想法吗?

最佳答案

我没有检查过这个,但我怀疑你应该能够为 NLog 编写你自己的布局渲染器(插件)来做你想做的事。 NLog 是非常可插拔的:)

布局渲染器外观的快速示例(未测试...):

[LayoutRenderer("intLevel", UsingLogEventInfo = true)]
public class IntLevel : LayoutRenderer
{
    protected override int GetEstimatedBufferSize(LogEventInfo logEvent)
    {
        return 1;
    }

    protected override void Append(StringBuilder builder, LogEventInfo logEvent)
    {
        switch(logEvent.Level.LowercaseName)
        {
            case "trace":
                builder.Append(0);
                break;
            case "debug":
                builder.Append(1);
                break;
            case "info":
                builder.Append(2);
                break;
            case "warn":
                builder.Append(3);
                break;
            case "error":
                builder.Append(4);
                break;
            case "fatal":
                builder.Append(5);
                break;
            default:
                builder.Append(-1);
                break;
        }
    }
}

关于c# - NLog 自定义日志级别值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738856/

相关文章:

c# - Windows 上 "secure"文件的最佳位置

c# - 表示具有相同名称的 n 层深度嵌套 XML 节点的最佳方式?

c# - C# 的可移植数据库

redis - .NET Core 是否支持 NLog.Redis?

c# - 在使用 formview 保存/插入数据源之前修剪文本框中值的最佳方法

c# - 从数据读取器中删除列

c# - 将 nlog 安装到 visual studio 2012

c# - WCF 服务,垂直记录

c# - NLog Header(忽略布局)

c# - NLog 到数据库 (Oracle)