我决定使用log4net作为新 Web 服务项目的记录器。一切正常,但是对于我在其中使用的每个 log4net 标签,我都会收到很多如下所示的消息web.config
:
找不到元素“log4net”的架构信息...
以下是我的相关部分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>
解决了:
- 将每个 log4net 特定标签复制到一个单独的
xml
文件中。确保.xml
用作文件扩展名。 - 将以下行添加到
AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlFile.xml", Watch = true)]
尼莫补充说:
只是向任何人发出警告,请遵循此线程中答案的建议。将 log4net 配置放在 web 服务根目录下的 xml 中可能存在安全风险,因为默认情况下任何人都可以访问它。请注意,如果您的配置包含敏感数据,您可能希望将其放在其他位置。
@wcm:我尝试使用单独的文件。我将以下行添加到AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
并将处理 log4net 的所有内容都放在该文件中,但我仍然收到相同的消息。