c# - .NET (4.0 - C#) 的可靠加密日志记录?

标签 c# .net multithreading logging

我是 C# 的新手,所以请多多包涵。我正在为我的项目(桌面小型企业应用程序)寻找日志记录解决方案。我知道这个问题已被问过无数次,但我还有一些额外的要求和问题。

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

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

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

-免费

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

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

你觉得我应该怎么做? 感谢您的想法和回答。

最佳答案

你可以使用 Microsoft Enterprise Library 5.0 logging .您可以使用 MSMQ 目标使其完全异步。使用加密部分,您有几个选择。

创建您自己的监听器,它将加密发送的消息,或者您可以在发送前对其进行加密。创建自己的监听器的几个不错的方面

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

使用 ent lib 的主要缺点是配置通常可以是 PIA,如果你对它感到复杂的话。

关于c# - .NET (4.0 - C#) 的可靠加密日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964044/

相关文章:

.net - EntLib 缓存应用程序 block 的替代方案?

.net - 发布 .NET 项目时如何解决“不支持 'Could not open Source file: The given path' s 格式”错误?

C#:无法分配给 foreach 迭代变量

c# - 在特定位置向内容类型添加字段

c# - 从 DataGridView 生成 CSV 文件时如何保留格式?

java - 我可以访问 Java 中同步块(synchronized block)使用的锁吗?

python - Golang 中的并发服务器

android - 如何使用循环器创建后台线程

C# 正则表达式不删除所有不需要的字符?

c# - 查看要通过 Visual Studio 通过 Web 引用发送的 XML