适用于 .NET 的可靠加密日志记录 (4.0 - C#)

本文关键字:记录 日志 NET 加密 适用于 | 更新日期: 2023-09-27 17:56:11

我对C#比较陌生,所以请耐心等待。我正在为我的项目(桌面小型企业应用程序)寻找日志记录解决方案。我知道这已经被问了无数次,但我还有一些额外的要求和问题。

是否有适用于 .NET 的日志记录工具(以下所有内容):

-可靠(记录发送到记录器的所有内容,即使是崩溃前的最后一个异常,log4net也不保证)
-fast(不阻止调用方 ->异步)
-线程安全(可以同时从多个线程调用并写入一个文件)

-

加密日志文件(或允许完全自定义日志记录 - 只写入它得到的内容,没有额外的信息)

-自由

好吧,这就是我的要求清单。你知道任何合适的通行费吗?我读过关于 log4net 的文章,但它似乎很旧(使用 .NET 2.0 并且主要重新发明轮子),nlog 听起来很有前途,因为它是异步的,但我认为它不能加密。我也不知道它们是否都是完全线程安全的。

我应该写自己的小记录器吗?我想过制作一个日志线程,一个日志列表(或队列),并使用锁定附加到列表适当的日志,日志记录线程将转换(可能为字符串,或某些部分为字符串)日志对象,加密它们并尽快将它们保存到文件中。

你认为我应该怎么做?感谢您的想法和答案。

适用于 .NET 的可靠加密日志记录 (4.0 - C#)

您可以使用

Microsoft企业库 5.0 日志记录。可以使用 MSMQ 目标使其完全异步。 使用加密部分,您有几个选择。

创建您自己的侦听器,该侦听器将加密发送的消息,或者您可以在发送之前对其进行加密。创建自己的听众的几个好处

  • 发件人不必"知道"如何加密。这意味着如果您的加密策略发生变化,您只需将其编码在一个对象中即可。
  • 根据环境配置不同的行为相对容易。
使用

ent lib 的主要缺点是,如果您使用它变得复杂,通常配置可能是 PIA。

NLog仍然被维护,与Log4Net相反。是的,它是线程安全的。请参阅我关于此的帖子。
您只需要知道如何根据您的用例场景正确使用它。

作为加密,NLog 非常可扩展,您可以编写自己的日志目标,在将内容发送到文件(或其他)之前对其进行加密。有很多库提供这样的实用程序(RSA等)。

在将加密服务中的内容发送到日志实用程序本身之前,您将无缝加密内容。这是一个起始代码示例,取自这篇文章

var provider = new System.Security.Cryptography.RSACryptoServiceProvider();
provider.ImportParameters(your_rsa_key);
var encryptedBytes = provider.Encrypt(
System.Text.Encoding.UTF8.GetBytes("Hello World!"), true);
string decryptedTest = System.Text.Encoding.UTF8.GetString(
provider.Decrypt(encryptedBytes, true));