1

installutil我有一个 Web 应用程序,它需要为事件日志注册事件源的自定义安装程序(使用 运行)。此安装程序代码包含一个常量(特别是事件源的名称),该常量也在web.config文件中重复。

有没有办法可以在一个地方定义这个常量(根据“DRY”原则)?

有关更多背景信息:这是针对 log4net 事件日志附加程序的,它需要安装程序来防止根据此 log4net 常见问题解答出现权限问题。

4

1 回答 1

1

根本不是一般问题的解决方案,但我通过编写自定义 log4net appender 解决了这个特殊情况,以便它可以在代码中而不是通过配置文件进行初始化:

public sealed class EzeReportingEventLogAppender : EventLogAppender
{
    public EzeReportingEventLogAppender()
    {
        Layout = new PatternLayout(Configuration.EventLogPatternLayout);
        LogName = Configuration.EventLogName;
        ApplicationName = Configuration.EventLogApplicationName;
    }
}

在 web.config 中(不再包括applicationName):

<appender name="FatalAppender" type="EzeReporting.EzeReportingEventLogAppender">
  <filter type="log4net.Filter.LevelRangeFilter">
    <param name="LevelMin" value="FATAL" />
  </filter>
</appender>
于 2012-06-26T16:04:05.827 回答