log4net не создает файл журнала для указанного файла проекта - PullRequest
3 голосов
/ 12 июля 2010

Я создаю приложение, которое вызывает скомпилированный исполняемый файл.На указанный файл проекта исходного кода исполняемого файла ссылается файл решения для родительского приложения.Дочерний исполняемый файл - это отдельное приложение командной строки.Родитель фактически является оболочкой графического интерфейса для консольного приложения.Когда я компилирую консольное приложение, я имею доступ ко всем функциям log4net, встроенным в приложение.Однако, когда я компилирую родительский проект, который ссылается на файлы исходного кода консольного приложения, все работает правильно, но журналы не генерируются.Что может вызвать эту ошибку, и как это можно исправить?Механизм внутренней отладки log4net не выдает никаких сообщений.

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

Чтобы log4net начал регистрировать в указанной сборке, вам необходимо:

  • Вызовите функцию Configure() log4net, вызвав log4net.Config.XmlConfigurator.Configure() при запуске приложения или добавив [assembly: log4net.Config.XmlConfigurator(Watch=true)] в AssemblyInfo.cs файл вашего приложения-оболочки.
  • Создайте раздел конфигурации log4net в app.config для вашей оболочки GUI, если вы еще этого не сделали. Добавьте файл app.config в свой проект и скопируйте в него информацию о конфигурации log4net из указанной библиотеки.
  • Убедитесь, что у учетной записи, на которой запущено приложение, есть доступ для записи и создания файлов в каталоге журналов (при условии использования ведения журнала на основе файлов).

Для получения дополнительной информации о настройке вашей конфигурации см .: http://logging.apache.org/log4net/release/manual/configuration.html

1 голос
/ 06 января 2011

Я знаю, что уже слишком поздно, но в любом случае просто для справки. Установите log4net.Internal.Debug = true в вашем приложении, и вы можете увидеть проблему на консоли. (делайте это программно, поскольку ваше приложение может не найти его конфигурационный файл, как это было в моем случае)

В Process p, после того, как вы запустите процесс с помощью p.start (), попробуйте записать стандартный вывод в консоль с этим; Console.Write (p.StandardOutput.ReadToEnd ());

Вы должны увидеть проблему. (почему log4net не настраивается или почему он не регистрируется) В моем случае он искал файл app.config в рабочем каталоге родительского процесса. (мое приложение и его настройки присутствуют в других местах файловой системы)

...