2016-08-15 5 views
2

Я пытаюсь использовать NLog.Mongo и NLog.MongoDB для записи журналов в базу данных Mongo. Тем не менее, я продолжаю получать сообщение об ошибке «Это недопустимый xsi: type» http://www.nlog-project.org/schemas/NLog.xsd:MongoDB ». Код, который я использую, является следующим:Хранение журналов в базе данных Mongo с использованием NLog

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 
    autoReload="true" 
    throwExceptions="false" 
    internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 

    <extensions> 
    <add assembly="NLog.MongoDB"/> 
    </extensions> 

    <targets> 
    <target xsi:type="MongoDB" name="mongo" database="NLog"> 
     <field name="timestamp" layout="${date}"/> 
     <field name="level" layout="${level}"/> 
     <field name="message" layout="${message}"/> 
    </target> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="mongo"/> 
    </rules> 
</nlog> 

Я либо искал решение этой ошибки, либо как это могло быть выполнено. Я искал везде, где я могу думать и только нашли без ответов на такие вопросы, как:

NLog xsi:type not working with custom target

Nlog with MongoDB connection and target

ответ

2

Ошибка, которая приходит только с указанием, что он не является признанным тип NLog. Расширение действительно работает, оказывается, что проблема с кодом выше связана с тем, что не указывается connectionString.

Я исправил проблему с помощью:

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 
    autoReload="true" 
    throwExceptions="false" 
    internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 

    <extensions> 
    <add assembly="NLog.Mongo"/> 
    </extensions> 

    <targets> 
    <target xsi:type="Mongo" name="mongo" databaseName="NLog" collectionName="Test" connectionString="mongodb://localhost/NLog"/> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="mongo"/> 
    </rules> 
</nlog> 
+0

Обратите внимание, что 'Databasename = "NLog",' CollectionName = "Test" и '/ NLog /' из ConnectionString являются необязательными. Если будут использоваться исключенные значения по умолчанию. (NLog будет использоваться в качестве имени базы данных, журнал будет использоваться как имя коллекции). Необходимая часть - это просто 'connectionString =" mongodb: // localhost "' – Roars

+0

Пожалуйста, отметьте это как anwer – Julian

+0

Сделаем. (говорит, что я не могу этого до завтра) – Roars