Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net-使用.config文件节(WebService/IIS)配置存储库[MyProject]时出错_C#_.net_Iis_Log4net - Fatal编程技术网

C# log4net-使用.config文件节(WebService/IIS)配置存储库[MyProject]时出错

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>

我将.net dll配置为在IIS下运行的web服务。我添加了log4Net日志,并在Assembylnfo下进行了以下设置

[程序集:log4net.Config.XmlConfigurator(配置文件= “bin\log4net.config”,Watch=true)]

之后,我在web.config中使用下面的

<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);