Случай, когда нотация []
полезна:
Если ваш объект является динамическим и в ключах могут быть какие-то случайные значения, такие как number
и []
, или любой другой специальный символ, например -
var a = { 1 : 3 };
Теперь, если вы попытаетесь получить доступ, например, a.1
, это произойдет из-за ошибки, потому что она ожидает строку там.
У меня также есть проблемы с этим методом загрузки log4net. Документация говорит, что вы должны сделать вызов очень рано при запуске приложения
, если вы используете атрибуты конфигурации, вы должны вызвать log4net, чтобы позволить ему читать атрибуты. Простой вызов LogManager.GetLogger вызовет чтение и обработку атрибутов в вызывающей сборке. Поэтому крайне важно сделать запись в журнале как можно раньше во время запуска приложения и, безусловно, до того, как какие-либо внешние сборки были загружены и вызваны.
Попробуйте поместить регистратор в тот же класс, который запускает ваше приложение (program.cs, app.xaml, что угодно). Например,
,private static readonly ILog Log = LogManager.GetLogger(typeof(Program));
, . И для ударов, сделайте любой вызов в журнал (даже тот, который отфильтрован или оценен из процесса добавления, он должен заставить log4net оценить ваш репозиторий / иерархию).
static Program()
{
Log.Debug("Application loaded.");
}
Я храню log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
в Global.asax.cs внутри Application_Start () ... Так что мне не нужно носить команду повсюду.
Я использую разделы Web.Config, чтобы настроить Logger и вручную регистрировать события, загрузчик Logger из global.asax
static ILog logger = LogManager.GetLogger(<LoggerName>);
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
}
Попробуйте загрузить его из global.asax