我决定在一个新的webservice项目中使用log4net作为日志记录器。一切都运作良好,但是每当我在web.config
中使用log4net标记时,我会得到很多像下面这样的信息:
找不到元素“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)]
nemo提示:
对于该问题中回答的建议请注意,可能存在安全风险。如果将log4net配置文件放在Web服务根目录之外的xml中,则默认情况下任何人都可以访问它。如果您的配置包含敏感数据,建议将其放在其他地方。
@wcm:我尝试使用一个单独的文件。我在AssemblyInfo.cs
中添加了以下行:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
将所有与log4net有关的内容放在同一个文件中,但我仍然收到相同的消息。