无法使Log4Net在我们的WCF应用程序中工作

And*_*Law 6 c# log4net iis-6 web-config

我们正在尝试使用Log4Net从我们的IIS 6部署的WCF应用程序进行日志记录.我们正在尝试登录到一个文件,但似乎无法创建日志文件,更不用说看到它们中的日志输出了.web.config的相关部分是:

<sectionGroup name="common">
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
...
<common>
    <logging>
        <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
            <arg key="level" value="INFO" />
            <arg key="showLogName" value="true" />
            <arg key="showDataTime" value="true" />
            <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
        </factoryAdapter>
    </logging>
</common>

<log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="c:\logs\ApplicationInfoTest.log" />
        <threshold value="INFO" />
        <param name="AppendToFile" value="true" />
        <param name="DatePattern" value="ddMMyyyy" />
        <param name="MaxSizeRollBackups" value="10" />
        <param name="MaximumFileSize" value="10MB" />
        <param name="RollingStyle" value="Size" />
        <param name="StaticLogFileName" value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="\r\n\r\n---------------------------------------------\r\n" />
            <param name="Footer" value="\r\n---------------------------------------------\r\n\r\n" />
            <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" />
        </layout>
    </appender>
    <root>
        <level value="INFO" />
        <appender-ref ref="FileAppender" />
    </root>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

使用这种配置,我们可以看到在使用DebugView时我们的应用程序中出现了INFO级别的日志记录,但很明显这是来自片段而不是
片段.

我们有没有在web.config中设置的东西?是否为我们为要写入的日志创建的目录存在权限问题?

请指出我们明显的错误.

Ale*_*ton 8

我还必须将此行添加到我的应用程序的AssemblyInfo.cs文件中,以使log4net正常工作.

// LOG 4 net config
[assembly:log4net.Config.XmlConfigurator(Watch=true)]
Run Code Online (Sandbox Code Playgroud)


Rub*_*ink 5

使用SysInternals中的ProcessMonitor查找拒绝权限的位置

(可能通过附加调试器和捕获异常来确定相同的信息,而不是在Just My Code中)

您确定运行该服务的进程是否具有您尝试写入的文件夹的权限?