我对C#比较新,所以请耐心等待。我正在寻找我的项目(桌面小型企业应用程序)的日志记录解决方案。我知道这已被问过无数次,但我有一些额外的要求和问题。
是否有.NET的日志记录工具(以下所有内容):
- 可靠(记录发送到记录器的所有内容,即使是崩溃前的最后一个异常,log4net也不保证)
- 快(不阻止来电者 - >异步)
- 线程安全(可以同时从多个线程调用并写入一个文件)
-free
嗯,这是我的要求清单。你知道任何合适的收费吗?我读过关于log4net的内容,但它似乎很旧(使用.NET 2.0并主要重新发明轮子),nlog听起来很有前途,因为它是异步的,但我认为它再也无法加密。另外我不知道它们是否完全是线程安全的。
我应该写自己的小记录器吗?我考虑过创建日志记录线程,日志列表(或队列),并使用锁定附加到列表中的相应日志,日志记录线程将转换(可能转换为字符串,或某些部分转换为字符串)日志对象,加密它们并保存它们尽快到文件中。
你觉得我应该怎么做? 感谢您的想法和答案。答案 0 :(得分:3)
您可以使用Microsoft Enterprise Library 5.0 logging 。您可以使用MSMQ目标将其完全异步。使用加密件,您有几个选择。
创建您自己的侦听器,它将对发送的邮件进行加密,或者您可以在发送之前对其进行加密。创建自己的监听器的几个很好的方面
使用ent lib的主要缺点是一般情况下配置可能是PIA,如果你复杂的话。
答案 1 :(得分:2)
您可以在将加密服务中的内容发送到日志实用程序本身之前对其进行无缝加密。以下是一个初学者代码示例,取自this post
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));