我有一个Web应用程序需要一个自定义安装程序(使用installutil
运行),它注册事件日志的事件源。此安装程序代码包含一个常量(特别是事件源的名称),该常量也在web.config
文件中重复。
有没有办法可以在一个地方定义这个常数(根据“DRY”原则)?
更多背景信息:这适用于log4net事件日志附加程序,它需要安装程序根据this log4net FAQ来防止权限问题。
答案 0 :(得分: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>