Лично я предпочел бы разделить эти вещи. Например, почему все ваши контроллеры должны знать о записи журналов событий? У меня был бы один класс LogWriter и интерфейс ILogWriter, и я использовал бы внедрение зависимостей (примеры см. В MVCContrib), т.е.
class FooController : Controller {
private readonly ILogWriter logWriter;
public FooController(ILogWriter logWriter) {
this.logWriter = logWriter; // <==== edited for clarity
}
}
(и с использованием фабрики контроллера на основе DI)
Это позволяет вам тестировать запись журнала, издеваясь над создателем журнала. Тогда настройки будут достаточно хорошо соответствовать константам (или извлеченным из конфигурации) внутри класса LogWriter.
По конкретному вопросу; если все значения постоянны, используйте константы (или, возможно, статические свойства):
public static GlobalSettings
{
public static const string LogCategory = "TMBC"; //event log category
public static const string LogSource = "MVC"; //event log source
}
Словарь был бы полезен, если они получены из конфигурации; если они действительно глобальные, статического словаря должно хватить - экземпляры будут полезны только в том случае, если он меняется между показами. Синглтон здесь не будет служить цели; вместо этого используйте статические члены.