加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:23:47 所属栏目:百科 来源:网络整理
导读:我正在使用最新版本的NLog(来自nuget),我以编程方式配置它. 目前它保存在我的数据库中,但我希望它加密我的stacktrace参数. NLog有什么办法自动执行此操作吗? 鉴于我有一个简单的函数来加密堆栈跟踪是否有一种简单的方法来应用它? 解决方法 我建议编写一个
我正在使用最新版本的NLog(来自nuget),我以编程方式配置它.
目前它保存在我的数据库中,但我希望它加密我的stacktrace参数.

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}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读