log4net, не работающий в сервисе окон

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

Я добавил это к своему assemblyInfo.cs в сервисном проекте:

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

Это - мой класс обслуживания с onstart и onstop:

private static log4net.ILog _log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private Builder _builder;

        public YCSWebServerService()
        {
            InitializeComponent();
            _builder = new Builder();
        }

        protected override void OnStart(string[] args)
        {
            _log.Info("YCSWebServerService started");
            _builder.Start();
        }

        protected override void OnStop()
        {
            _log.Info("YCSWebServerService stopped");
            _builder.Stop();
        }

У меня есть "определенный" log4net файл конфигурации, добавленный к моему сервисному проекту:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="EventLogAppender" />
    </root>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <threshold value="DEBUG" />
      <applicationName value="Lantic YCS WebServer" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="(%-5level %date{hh}:%date{mm}:%date{ss} [%thread] %logger [%property{NDC}] ) %message %n" />
      </layout>
    </appender>
  </log4net>

</configuration>

Какие-либо идеи или подсказки?

7
задан Philipp M 15 November 2013 в 08:56
поделиться

2 ответа

Некоторые вещи, которые стоит попробовать:

Есть ли у пользователя, запускающего службу, права на запись?

Регистрируются ли какие-либо исключения в журналах Windows?

Вы пытались запустить службу в режиме отладки, чтобы проверить, работает ли Log4net? генерировать исключения?

1
ответ дан 7 December 2019 в 05:17
поделиться

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=293617

http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/5bef59bc -a28f-4e6d-8ddb-730e12764162

В Windows Vista, Windows XP SP 2, Windows Server 2003, 2008 и Windows 7 пользователю необходимы права администратора для доступа к журналу безопасности. Теперь, когда log4net пытается создать журнал событий Источник , все журналы проверяются, если он уже существует. Таким образом, со службой Windows пользователю Windows Server потребуются права администратора (что нехорошо).

Решение: настройте явный источник в конфигурации log4net (как вы это делали: , Lantic YCS WebServer является вашим источником) и создайте этот источник в настройках. (поскольку у Setup-User должны быть права администратора).

1
ответ дан 7 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

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