Log4Net "Konnte keine Schemainformationen finden"
Entschied ich mich für log4net als logger für einen neuen webservice Projekt. Alles ist in Ordnung, aber ich bekomme eine Menge von Nachrichten wie die unten, für jeden log4net-tag ich bin mit meiner web.config
:
Nicht finden konnte, schema-Informationen für
das element 'log4net'...
Unten sind die relevanten Teile meiner web.config
:
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level: %message%newline" />
</layout>
</appender>
<logger name="TIMServerLog">
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</logger>
</log4net>
Gelöst:
- Kopie jedes log4net bestimmten tag zu einer separaten
xml
-Datei. Stellen Sie sicher, dass Sie.xml
als Datei-Erweiterung. - Fügen Sie die folgende Zeile
AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlFile.xml", Watch = true)]
nemo Hinzugefügt:
Nur ein Wort der Warnung an alle
befolgen Sie die Ratschläge für die Antworten
in diesen thread. Ist es möglich die
Sicherheitsrisiko durch das log4net
Konfiguration in eine xml-off root
der web-Dienst, wie es sein wird
die für jedermann zugänglich sind standardmäßig. Nur
darauf hingewiesen werden, wenn Ihre Konfiguration
sensible Daten enthält, möchten Sie vielleicht
um es wo anders.
@wcm: ich habe versucht, mit einer separaten Datei. Ich fügte hinzu, die folgende Zeile zu AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
und legte alles, was den Umgang mit log4net in dieser Datei, aber ich bekomme immer noch die gleichen Meldungen.
InformationsquelleAutor der Frage xsl | 2008-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich eine andere nehmen, und musste die folgende syntax:
die sich von xsl letzten post, aber einen Unterschied gemacht für mich. Überprüfen Sie heraus dieses blog-post, es hat mir geholfen.
InformationsquelleAutor der Antwort steve_mtl
Können Sie binden Sie in ein schema zu den
log4net
element. Es gibt ein paar im Umlauf, die meisten nicht vollständig für die verschiedenen Optionen zur Verfügung. Ich habe die folgenden xsd-soviel überprüfung wie möglich:http://csharptest.net/downloads/schema/log4net.xsd
Können Sie binden Sie es in der xml einfach durch ändern der
log4net
element:InformationsquelleAutor der Antwort
Nur ein Wort der Warnung an alle befolgen Sie die Ratschläge der Antworten in diesem thread. Es ist ein Sicherheitsrisiko, indem der log4net Konfiguration in eine xml-off-root des web-service, wie es sein wird, die für jedermann zugänglich sind standardmäßig. Nur darauf hingewiesen werden, wenn Ihre Konfiguration sensible Daten enthält, möchten Sie vielleicht, um es zu setzen, wo sonst.
InformationsquelleAutor der Antwort James McMahon
Ich glaube, Sie werden sehen, die Nachricht, da Visual Studio nicht wissen, wie überprüft wird, die log4net-Abschnitt der config-Datei. Sie sollten in der Lage sein, dies zu beheben durch kopieren der log4net-XSD in C:\Program Files\Microsoft Visual Studio 8\XML\Schemas (oder wo auch immer Ihr Visual Studio installiert ist). Als zusätzlichen bonus sollten Sie jetzt bekommen, intellisense-Unterstützung für log4net
InformationsquelleAutor der Antwort Wheelie
Eigentlich brauchen Sie nicht zu bleiben .xml-Erweiterung. Sie können eine beliebige andere Erweiterung in der ConfigFileExtension Attribut:
InformationsquelleAutor der Antwort
@steve_mtl: Ändern der Datei-Erweiterungen von
.config
zu.xml
das problem gelöst. Danke.@Wheelie: ich konnte nicht versuchen, Ihren Vorschlag, denn ich brauchte eine Lösung, die funktioniert mit einer unveränderten installation von Visual Studio.
Um es zusammenzufassen, hier ist, wie das problem zu lösen:
xml
-Datei. Stellen Sie sicher, dass Sie.xml
als Datei-Erweiterung.Fügen Sie die folgende Zeile
AssemblyInfo.cs
:[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlFile.xml", Watch = true)]
InformationsquelleAutor der Antwort xsl
Für VS2008 fügen Sie einfach die log4net.xsd-Datei zu Ihrem Projekt; VS sieht in dem Projekt-Ordner sowie den Installationsordner Wheelie genannt.
Auch, mit einem .config-Erweiterung statt .xml vermeidet die Frage der Sicherheit, da der IIS nicht dienen *.config-Dateien standardmäßig.
InformationsquelleAutor der Antwort devstuff
In Roger ' s Antwort, wo er ein schema, das funktionierte sehr gut für mich, außer wenn ein Kommentator erwähnt
Ich modifizierte das ursprüngliche schema hatte eine
xs:simpletype
namenslog4netAppenderTypes
entfernt und die enumerations. Ich habe stattdessen beschränkt es auf ein basic .NETTO-Eingabe-Muster (ich sage einfach, weil es nur unterstützt typename nur, oder typename, Montage -- aber kann auch mal jemand erweitern.Ersetzen Sie einfach die
log4netAppenderTypes
definition mit den folgenden in der XSD:Bin ich der Weitergabe dieser wieder auf den ursprünglichen Autor, wenn er will, in seine offizielle version. Bis dahin müssten Sie herunterladen und ändern Sie die xsd-und die Referenz in einer relativen Art und Weise, zum Beispiel:
InformationsquelleAutor der Antwort Kit
Haben Sie versucht, mit einer separaten log4net.config-Datei?
InformationsquelleAutor der Antwort wcm
Bekam ich eine test-asp-Projekt zu bauen, durch das setzen der xsd-Datei in der visual studio-schemas Ordner wie oben beschrieben (bei mir ist es C:\Program Files\Microsoft Visual Studio 8\XML\Schemas) und dann meine
web.config
wie folgt Aussehen:InformationsquelleAutor der Antwort
Ohne änderung Ihrer Visual Studio-installation, und zu berücksichtigen, die korrekte Versionierung/etc. unter dem rest von Ihrem team hinzufügen .xsd-Datei zu Ihrer Lösung (als Lösung Posten"), oder wenn Sie nur wollen, dass es für ein bestimmtes Projekt, nur einbetten, die es gibt.
InformationsquelleAutor der Antwort Matt Enright
Bemerkte ich es ein bisschen spät, aber wenn man sich in die Beispiele log4net liefert man Sie sehen kann legen Sie alle Konfigurations-Daten in eine app.config, mit einem Unterschied, die Registrierung von configsection:
Könnte die definition als Typ "System.- Konfiguration.IgnoreSectionHandler" der Grund, Visual Studio zeigt keine Warnung/Fehler-Meldungen auf der log4net-Zeug?
InformationsquelleAutor der Antwort Fysicus
Folgte ich Kit's Antwort https://stackoverflow.com/a/11780781/6139051 und es hat nicht funktioniert für AppenderType Werte wie "log4net.Appender.TraceAppender, log4net". Die log4net.dll die Montage hat die AssemblyTitle "log4net", D. H. den Namen der assembly, die nicht über einen Punkt drin, das war der Grund, warum die regex-in-Kit ' s Antwort hat nicht funktioniert. Ich muss hinzufügen das Fragezeichen nach dem Dritten Klammern eingeschlossene Gruppe der regexp, und danach funktionierte es einwandfrei.
Die modifizierte regex sieht wie folgt aus:
InformationsquelleAutor der Antwort Volodymyr