C# log4net-使用.config文件节(WebService/IIS)配置存储库[MyProject]时出错
我将.net dll配置为在IIS下运行的web服务。我添加了log4Net日志,并在Assembylnfo下进行了以下设置 [程序集:log4net.Config.XmlConfigurator(配置文件= “bin\log4net.config”,Watch=true)] 之后,我在web.config中使用下面的C# log4net-使用.config文件节(WebService/IIS)配置存储库[MyProject]时出错,c#,.net,iis,log4net,C#,.net,Iis,Log4net,我将.net dll配置为在IIS下运行的web服务。我添加了log4Net日志,并在Assembylnfo下进行了以下设置 [程序集:log4net.Config.XmlConfigurator(配置文件= “bin\log4net.config”,Watch=true)] 之后,我在web.config中使用下面的 <system.diagnostics> <trace autoflush="true"> <listeners>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="E:\MyLocation\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
<system.serviceModel>
现在,我在log4net.txt中获得了以下条目以及大量诊断信息,其中显示了初始化是否正常,并且它能够打开日志文件
log4net:使用文件配置存储库[MYRepository]
[E:\MyLocation\bin\log4net.config]监视文件更新
log4net:正在打开文件进行写入[…]
此时,我能够正确地获取日志。现在,在上面初始化的日志之后,我得到了下面的行
log4net: configuring repository [MYRepository] using .config file section
log4net: Application config file is [E:\MyLocation\web.config]
log4net:ERROR Failed to find configuration section 'log4net' in the application's .config file. Check your .config file for the <log4net> and <configSections> elements. The configuration section should look like: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
log4net:使用.config文件节配置存储库[MYRepository]
log4net:应用程序配置文件是[E:\MyLocation\web.config]
log4net:在应用程序的.config文件中找不到配置节“log4net”时出错。检查.config文件中的和元素。配置部分应如下所示:
如果初始化成功,如日志顶部所示,为什么log4net会再次尝试在web.config中检查web.config以获取配置?能否显示log4net.config文件 请尝试将以下配置添加到您的配置文件中,并让我们知道您的观察结果
<configSections>
<!-- Other section configurations go here. For e.g., EF, Elmah..etc -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\MyWebService.log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="yyyyMMdd" />
<param name="MaxSizeRollBackups" value="25" />
<param name="MaximumFileSize" value="1000KB" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
如果您有web.config文件,那么我建议您在webservice的web.config文件中设置这些配置
另请注意,如果此答案对您没有帮助,请让我知道,这样我会删除答案,其他人可以看到奖励。在您的项目中包括log4net,您可以使用NuGet软件包管理器(或者,您也可以手动下载并添加log4net.dll参考): 将以下标记添加到Web.config文件:
<configuration>
<configSections>
[...]
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
[...]
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\FileName.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="5"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ISO8601} [%thread] %level %logger %method - %message %exception%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG"/>
<levelMax value="FATAL"/>
</filter>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="RollingFileAppender"/>
</root>
<logger>
<level/>
<appender-ref/>
</logger>
使用以下部分创建logger的实例
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private static readonly log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
我已经试过了,它确实有效。但是它创建了两个日志文件,一个基于log4net.config,另一个基于web.config。如何指定使用其中一个?或者这只是一个我应该忽略的警告?您是否在
app.config
中启用了
?实际上,您正在尝试做不同的事情,[assembly:log4net.Config.XmlConfigurator(ConfigFile=“bin\log4net.Config”,Watch=true)]
这里您正在为应用程序配置日志,system.diagnostics
使log4net内部调试能够监视log4net的问题itself@asb试试下面的答案,谢谢
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
private static readonly log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);