gpt4 book ai didi

c# - NLog - 如何加密数据库中记录的堆栈跟踪

转载 作者:太空狗 更新时间:2023-10-29 21:24:10 26 4
gpt4 key购买 nike

我正在使用最新版本的 NLog(来自 nuget)并以编程方式配置它。目前它保存在我的数据库中,但我希望它能加密我的堆栈跟踪参数。

有什么方法可以让 NLog 自动执行此操作?鉴于我有一个简单的函数来加密堆栈跟踪,是否有一种简单的方法来应用它?

最佳答案

我建议写一个 LayoutRendererWrapper . LayoutRendererWrapper 允许您“包装”LayoutRenderer,以便您可以对输出应用处理。在加密堆栈跟踪的情况下,您可以配置 NLog 以将 StackTrace 添加到输出,但您可以包装 StackTrace 布局渲染器,以便您可以应用加密。

您可以在 NLog's source code repository 中查看 LayuoutRendererWrappers 示例.

实际上,LayoutRendererWrapper 的一般性质意味着您可以编写一个加密包装器并将其应用于任何 LayoutRenderer。因此,例如,您可以加密堆栈跟踪和消息,但将其余字段保留为明文。

这是一个示例(未经测试),说明您可以如何编写加密 LayoutRendererWrapper:

namespace NLog.LayoutRenderers.Wrappers
{
using System.ComponentModel;
using System.Globalization;
using NLog.Config;

[LayoutRenderer("Encrypt")]
[AmbientProperty("Encrypt")]
[ThreadAgnostic]
public sealed class EncryptLayoutRendererWrapper : WrapperLayoutRendererBase
{
public EncryptLayoutRendererWrapper()
{
this.Culture = CultureInfo.InvariantCulture;
this.Encrypt = true;
}

[DefaultValue(true)]
public bool Encrypt { get; set; }

public CultureInfo Culture { get; set; }

protected override string Transform(string text)
{
return this.Encrypt ? Encrypt(text) : text;
}

protected string Encrypt(string text)
{
//Encrypt your text here.
}
}
}

我认为它会在 NLog.config 文件中这样配置:

${longdate} | ${logger} | ${level} | ${encrypt:${stacktrace}} | ${message}

我不确定您将如何以编程方式配置它,因为我通常不使用编程配置。

关于c# - NLog - 如何加密数据库中记录的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com