Как указать путь к файлу журнала с помощью log4net.config?

В моем log4net.config я поставил

<appender name="Access" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%envFolderPath{CommonApplicationData}\MyApp\test.txt"/>  

и мой код для конфигурации

    XmlDocument log4netConfig = new XmlDocument();
    log4netConfig.Load(File.OpenRead("log4net.config"));
    var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
                               typeof(log4net.Repository.Hierarchy.Hierarchy));

    log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

но он не создал файл в 【C:\ProgramData\MyApp】.

Я также пытался использовать

  • %envFolderPath{данные приложения}
  • %envFolderPath{ProgramData}

Любые идеи.

Благодарю вас!


person RPrashant    schedule 09.05.2019    source источник


Ответы (1)


На моей машине работает нормально. Вы можете попробовать отладить его с помощью шагов:

  1. Попробуйте записать информацию в какой-нибудь жестко заданный путь, например C:\temp, чтобы убедиться, что ваша конфигурация работает нормально.
  2. Добавьте ссылку на System.Configuration.ConfigurationManager, чтобы убедиться, что все библиотеки на месте.
  3. Используйте эту строку для настройки log4net:

XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly()), new FileInfo("log4net.config"));

  1. Убедитесь, что у вас достаточно прав для записи в специальные папки.
  2. Создайте новое консольное приложение в .net core с той же конфигурацией и включите внутреннюю отладку:

log4net.Util.LogLog.InternalDebugging = true;

Вы точно увидите, что происходит. Вы увидите, какие пути использует ваше приложение, и какие ошибки возникают во время внутренней настройки log4net.

person Peska    schedule 09.05.2019