Настройка / установка log4net для RavenDB в Visual Studio 2010 - PullRequest
3 голосов
/ 27 декабря 2011

Я пытаюсь настроить мой проект C # для использования log4net для RavenDB .У меня уже есть log4net, работающий с FileAppender, но RavenAppender, похоже, сейчас не работает.Ниже приведены шаги, которые я предпринял:

Шаг 1. Установка log4net.Raven

Я установил библиотеку log4net.Raven, используя следующие инструкции консоли диспетчера пакетов NuGet (взятые из пакетавеб-сайт, указанный выше):

Install-Package log4net.Raven

Эта команда добавила библиотеку log4net.Raven к ссылкам на мой проект.

Шаг 2. Настройка Web.config

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

<!-- Example connection string config from blog -->
<configsections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net">
</configsections>
<connectionstrings>
  <add connectionstring="Url=http://raven; DefaultDatabase=Log" name="RavenLogs">
    <add connectionstring="Url=http://localhost:8080;user=asa;password=asa" name="SecureRaven">
    </add>
  </add>
</connectionstrings>

<!-- My current config -->
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<connectionStrings>
    <add name="RavenDB" connectionString="Url=http://localhost:8080;Database=MyDatabase" />
</connectionStrings>

<!-- Example log4net config from README.
My project uses these settings except for the connectionString value,
which is set to "RavenDB" to match the setting name above.
-->
<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
        <!-- LogFileAppender settings here -->
    </appender>
    <appender name="RavenAppender" type="log4net.Raven.RavenAppender">
        <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="INFO" />
            <levelMax value="FATAL" />
        </filter>
        <connectionString value="RavenDB"/>
        <maxNumberOfRequestsPerSession value="100"/>
        <bufferSize value="50" />
        <evaluator type="log4net.Core.LevelEvaluator">
            <threshold value="ERROR" />
        </evaluator>
    </appender>
    <root>
        <level value="ALL"/>
        <appender-ref ref="LogFileAppender" />
        <appender-ref ref="RavenAppender" />
    </root>
</log4net>

Шаг 3: Вход из C # кода

В моем коде C # у меня есть следующее:

public class FooController : Controller
{
    private static ILog _log = LogManager.GetLogger(typeof(FooController));

    public ActionResult Index()
    {
        _log.Info("Hello World!");
        return View("Index");
    }
}

Этот код будет записан в файл журнала на моей рабочей станции, поэтому я знаю, что log4net в целом работает правильно.Но для RavenDB я проверял документы и журналы для MyDatabase через студию Raven в веб-браузере, и я не вижу никаких журналов уровня информации с сообщением «Hello World».

Кто-нибудь имеетесть идеи, в чем может быть проблема и как ее исправить?

Ответы [ 2 ]

1 голос
/ 25 мая 2012

Может быть, проблема здесь:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">

если в вашем проекте нет класса FileAppender, вам нужно добавить имя библиотеки, где находится FileAppender, например:

<appender name="LogFileAppender"
          type="log4net.Appender.FileAppender, log4net.Raven">

(синтаксис для типа =" Fully qualified class name , assembly file name , version , culture , public key token ")

0 голосов
/ 08 декабря 2012

Попробуйте отладку log4net как здесь Устранение неполадок Log4Net Если вы обнаружите эту строку:

log4net: Adding appender named [RavenAppender] to logger [root].

RavenAppender работает

...