Разве вы не можете просто использовать механизм регистрации событий по умолчанию, который уже предоставляется классом ServiceBase? Если ваша служба не запускается, она автоматически запишет запись в журнал событий с указанием (с помощью stacktrace).
Кроме того, что касается комментариев о log4net (или о любой другой наилучшей работе, такой как система регистрации), я думаю, что это действительно зависит от того, чего вы пытаетесь достичь.
В вашем примере использование log4net (или встроенной поддержки ведения журнала ServiceBase), скорее всего, нормально.
Однако существуют ситуации, когда даже тот факт, что произошла ошибка и что этот факт не может быть записан где-либо, является проблемой. Например, предположим систему аутентификации или авторизации. Если вы не можете успешно и надежно зарегистрировать, что, например, аутентификация по паролю не удалась из-за неправильных учетных данных, возможно, вам не разрешено продолжать (то же самое, кстати, если бы вы, аутентификация по паролю, была бы успешной).
Итак, иногда вам нужно знать, когда попытка регистрации не удалась, и обрабатывать ее самостоятельно.
Конечно, есть ограничения (проблема куриного яйца), и то, что вы делаете, очень специфично для конкретного приложения или сценария.