我需要修改现有程序,通过写入访问文件来执行一些错误记录,它实际上使用了log4net dll(正如我们通过hex编辑器检查dll所发现的)所以在想法中我需要重新编译调整与程序使用的原始DLL。需要非常简单,对于写入访问文件的一些错误,系统应该通过向他发送电子邮件自动警告管理员。
我应该关注项目和文档的哪些部分?作为一个对.net平台和log4net都很陌生的人,我很失落。
编辑:似乎嵌入了log4net的配置文件,因此无法直接访问配置。似乎我需要另一种方法来解决这个问题。 此致答案 0 :(得分:5)
您可能根本不需要更改dll。您的log4net配置可能位于App.config文件中,也可能位于单独的配置文件中,例如log4net.xml。
您可以严格使用配置文件为某些类型的错误设置电子邮件通知。
configuration examples page上有一个示例,只搜索SmtpAppender。如果您需要控制哪些邮件发送到电子邮件,您可以查看记录器和过滤器上configuration manual的部分。
答案 1 :(得分:1)
如果你有程序的源代码,那么从硬编码配置更改为配置文件相当简单。
如果您无法访问源代码,我会使用
DateTime lastAccessTime = File.GetLastAccessTime(@"c:\file.txt");
或DateTime lastWriteTime = File.GetLastWriteTime(@"c:\file.txt");
使用第二个程序确定文件访问权限,并仍使用log4net发送电子邮件。尝试调整log4net.dll要困难得多,而不是我的pov推荐。
答案 2 :(得分:1)
你写了
似乎嵌入了log4net的配置文件 我想,你有几个选择:
如果您有原始程序的源代码,请不要嵌入Log4Net文件并根据Don Kirkby的建议进行更改(添加SmtpAppender)。
如果你没有源代码,但你在法律上有所帮助,你可以反汇编程序,更改嵌入式资源(添加一个SmtpAppender)并将其重新组合在一起(例如:csc.exe /out:main.exe /target:exe /resource:main.exe.config main.cs
)。
或者,如果您没有源代码并且不允许进行逆向工程,则可以修改log4net的配置方式并加载另一个配置文件而不是嵌入式配置文件。为此,我想应该修改XmlConfigurator Class。如果您的原始程序集再次构建了特定版本的log4net,您可能需要添加assembly redirect,以便使用您的costumized log4net.dll。 毕竟你应该按照前面的建议配置一个SmtpAppender。