Файл журнала не создается для консольного приложения, если он вызывается через Process в C # - PullRequest
0 голосов
/ 12 октября 2018

У меня есть два приложения: одно WPF и одно консольное приложение.

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

для WPF (App.xaml.cs):

protected override void OnStartup(StartupEventArgs e)
{
   var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
   log4net.Config.XmlConfigurator.Configure(repo, new FileInfo("logging.config"));

   base.OnStartup(e);
}

logging.config сохраняет файл журнала как wpf_debug.log.

для консоли:

static void Main(string[] args)
{
    var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
    log4net.Config.XmlConfigurator.Configure(repo, new FileInfo("logging.config"));
}

logging.config сохраняет файл журнала как console_debug.log.

Хорошо, тогда, если я запускаю из приложения WPF процесс

var startInfo = new ProcessStartInfo();
startInfo.FileName = "PathToConsoleExe";
...
using (Process pr = new Process())
{
   pr.StartInfo = startInfo;

   pr.Start();
   pr.WaitForExit();
}

Проблема в том, что я не вижу никаких.log файл для консольного приложения.Я не знаю почему.Журналы создаются только для WPF.

Если я запускаю консольное приложение через командную строку, он работает нормально.

1 Ответ

0 голосов
/ 12 октября 2018

Я предполагаю, что он пытается загрузить файл logging.config из неправильной папки.Попробуйте установить свойство startInfo.WorkingDirectory перед запуском процесса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...