вход log4net, не создающий файл журнала

Я не уверен - ли это правильный форум для регистрации этого вопроса. Но я просто надеюсь, что кто-то здесь, возможно, использовал log4net, в прошлом настолько надеющийся для получения некоторой справки.

Я использую log4net для входа моих исключений. Параметры конфигурации похожи на это:



 
  

Я начал путем добавления этой конфигурации к web.config, но я получил ошибку (студия VS не могла найти, что схема для log4net-"Не могла найти информацию о схеме для элемента log4net"). Таким образом, я перешел по этой ссылке (Log4Net "Не удалось найти сообщения" информации о схеме), и настроил мои настройки в отдельном XML-файле и включил следующую строку кода мой AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlfile.xml", Watch = true)]

И в фактическом коде, я поместил эту строку:

public void CreateUser(String username, String password)
{
 try
 {
  log.Info("Inside createuser");
  //code for creating user
 }
 catch(exception e)
 {
  log.Info("something happened in create user", e);
 }
}

Проблема состоит в том, что файл журнала не создается. Я ничего не вижу внутри C:\Logs. Кто-либо может сказать мне, что я делаю неправильно здесь?

Любые предложения/исходные данные будут очень полезны.

Спасибо всем заранее.

6
задан Community 23 May 2017 в 11:53
поделиться

4 ответа

Мне не удалось заставить работать настройку в Asembly.cs, не добавив это в Application_Start в моем Global.asax:

log4net.Config.XmlConfigurator.Configure();
6
ответ дан 16 December 2019 в 21:36
поделиться

Ваш файл журнала не создается, вероятно, из-за того, что у пользователя ASPNET нет разрешения на запись в каталог C: \ Logs \ . Убедитесь, что вы предоставили ASPNET полные права везде, где ваше приложение хочет создать файл журнала.

1
ответ дан 16 December 2019 в 21:36
поделиться

Итак, вы загружаете файл конфигурации, но затем устанавливаете переменную log следующим образом

private static readonly ILog log = LogManager.GetLogger(typeof(Program));
1
ответ дан 16 December 2019 в 21:36
поделиться

Если вы не укажете полный путь для отдельного файла конфигурации, log4net ожидает, что файл будет находиться в пути, возвращаемом:

 System.AppDomain.CurrentDomain.BaseDirectory

Если у вас простое консольное приложение, это обычно означает каталог, содержащий сборку, но это не обязательно верно в других случаях. Есть много способов решить эту проблему (например, мой ответ здесь, а также).

Для начала может быть проще вернуть конфигурацию log4net обратно в app/web.config и игнорировать схему warning. Если логирование работает, то вы можете быть уверены, что у вас нет проблем с разрешениями, и можете переходить к следующему шагу, чтобы иметь конфигурацию во внешнем файле.

Что за приложение вы пишете? Возможно, я мог бы быть немного более конкретным в своем ответе...

0
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: