【问题标题】:log4net and mailinglog4net 和邮件
【发布时间】:2009-09-24 19:18:34
【问题描述】:

我需要修改现有程序,该程序通过写入访问文件来记录一些错误,它实际上使用 log4net dll(正如我们通过十六进制编辑器检查 dll 发现的那样),所以我需要重新编译调整后的dll 与该程序使用的原始文件。需求很简单,对于写入access文件的一些错误,系统会自动给管理员发邮件警告。

我应该查看项目和文档的哪些部分?作为一个对 .net 平台和 log4net 非常陌生的人,我很迷茫。

编辑:似乎 log4net 的配置文件是嵌入的,所以无法直接访问配置。看来我需要另一种方法来解决这个问题。 问候

【问题讨论】:

    标签: .net logging log4net


    【解决方案1】:

    您可能根本不需要更改 dll。您的 log4net 配置可能在 App.config 文件中,或者像 log4net.xml 这样的单独配置文件中。

    您可以严格使用配置文件为某些类型的错误设置电子邮件通知。

    configuration examples page 上有一个示例,只需搜索 SmtpAppender。如果您需要控制将哪些消息发送到电子邮件,您可以查看 configuration manual 中有关记录器和过滤器的部分。

    【讨论】:

      【解决方案2】:

      如果你有程序的源代码,那么从硬编码的配置改成配置文件是相当简单的。

      如果您无法访问源代码,我会使用 DateTime lastAccessTime = File.GetLastAccessTime(@"c:\file.txt");DateTime lastWriteTime = File.GetLastWriteTime(@"c:\file.txt"); 使用第二个程序确定文件访问权限,并且仍然使用 log4net 发送电子邮件。尝试调整 log4net.dll 要困难得多,我的观点不建议这样做。

      【讨论】:

        【解决方案3】:

        你写的

        好像是嵌入了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,以便使用您定制的 log4net.dll。 毕竟你应该按照前面的建议配置一个 SmtpAppender。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-29
          相关资源
          最近更新 更多