C# 如何加密log4net日志文件

C# 如何加密log4net日志文件,c#,log4net,C#,Log4net,有没有办法加密或保护log4net输出?我假设您想要加密日志的输出。在这种情况下,您将需要编写自己的Appender来处理加密。我建议您弄清楚在不加密的情况下要使用什么输出机制(即FileAppender、EventLogAppender等),然后扩展该Appender并覆盖实际写入输出的功能 可以找到附录器的参考文档 例如,使用EncryptedFileAppender扩展FileAppender,并覆盖/实现所需的成员,以便挂接到文件写入中 或者,您可以从IAppender进行扩展,完全从头

有没有办法加密或保护log4net输出?

我假设您想要加密日志的输出。在这种情况下,您将需要编写自己的Appender来处理加密。我建议您弄清楚在不加密的情况下要使用什么输出机制(即FileAppender、EventLogAppender等),然后扩展该Appender并覆盖实际写入输出的功能

可以找到附录器的参考文档

例如,使用EncryptedFileAppender扩展FileAppender,并覆盖/实现所需的成员,以便挂接到文件写入中


或者,您可以从IAppender进行扩展,完全从头开始创建appender。这将为您提供更多的控制,但如果您只想加密负载,则可能需要做更多的工作。

如果您试图阻止用户通过web读取负载,您可以将正在写入日志记录的文件名更改为您的网站不允许提供的扩展名。这样,用户就无法猜测您的日志文件并通过web访问它

如果试图阻止登录到服务器本身的用户查看文件内容,则可以使用权限控制锁定文件,以便只有特定管理员组中的用户才能查看内容


或者,您可以登录到数据库,这样就不需要保护任何文件。

没有现成的加密支持。因此,正如其他人在这里所说的,您必须自己实现这一点


也就是说,我建议使用子类化a来进行加密。这基本上可以让您将appender“放在”任何标准appender之前,您可以选择执行实际的磁盘写入操作

我意识到这个答案是在最初的发布日期几年后出现的,但在面临同样的问题后,我决定创建一个开源软件包来完成这项工作:Log4Net消息加密程序

源代码可以在上找到


该软件包可以从

下载,您到底想加密什么?日志输出?或者访问log4net API?还是别的?谢谢你的好建议。所以,你的意思是,我最好在添加到日志之前加密我的内容,实现一个完成这项工作的包装器。然后,我的日志的内容将全部加密,而无需在log4net中配置任何内容?您应该能够连接到它实际将每一行项目附加到日志文件的位置,这允许您加密整行。一旦您完成了这一点,那么您就需要配置log4net来使用Appender,而不是以前使用的任何东西。在这种情况下EncryptedFileAppender@Joseph,您是建议为每行日志加密它,还是在它滚动到不同的文件时(当它达到日志的最大大小时)?@paradisonoir,以您喜欢的为准。请记住,无论您做出何种选择,您都必须拥有相同的功能才能解密。感谢分享,我一直在寻找类似的nlog解决方案,现在至少我有一个ref实现要遵循。顺便说一句,我计划使用公钥/私钥对随机密钥进行加密,以进一步提高安全性,而不是使用固定对称密钥,因为任何有权访问日志的人都可以从应用程序获得密钥。很高兴我能帮上忙!对于我来说,主要用例围绕着存储在数据库中或初始服务器之外的日志。我的想法是,如果攻击者可以访问web.config文件,那么加密日志可能是徒劳的!我甚至还考虑将实现移植到NLog上,但生活阻碍了我。如果您确实设法创建了项目并将其开源,请告诉我,因为我特别感兴趣!另外要提到的是web.config中的加密密钥部分应该使用Aspnet_regis进行加密。这意味着密钥不是纯文本的,并且会更加安全。