2010-09-13 88 views
2

我在使用log4net登录我的应用程序时遇到问题。 我的应用程序由WCF服务和连接到它的客户端组成。 在客户端登录不成问题,一切正常。WAS托管的WCF服务和log4net

这里是我的服务器端是如何制造:

  • 一个WCF DLL,它包含我的服务的合同,基本实现(包括错误处理)。实际操作是在单独的业务层中进行的,该业务层抛出实现捕获的所需异常(并使用FaultContracts发回)。
  • 数据层(这里没有问题)。
  • “Utils”库,其中包含我的包装日志方法。

我log4net.config文件如下:

<?xml version="1.0" encoding="utf-8" ?> 
<log4net debug="false"> 

    <appender name="TechnicalFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
    <param name="File" value="c:\\log\\technical.log"/> 
    <param name="AppendToFile" value="true"/> 
    <param name="RollingStyle" value="Date"/> 
    <param name="DatePattern" value="'_'yyyyMMdd-HH"/> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
     <param name="ConversionPattern" value="%d [%-5t] %-5p - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <level value="ALL"/> 
    </root> 

    <logger name="TechnicalLog"> 
    <level value="ALL"/> 
    <appender-ref ref="TechnicalFileAppender"/> 
    </logger> 

</log4net> 

所以当在业务层中发生错误,它被捕捉,记录并转化为FaultException异常。有问题。没有创建日志文件。 我GOOGLE了一下,发现了一些线索(一般来说,访问权限,但我用ProcMon,并没有找到所需的文件或目录调用)。

我现在有点失落,我不知道该怎么尝试。

我发布我的服务使用Visual Studio中的“发布”命令,所以在服务器上我有我的应用程序目录,里面有一个svc文件,一个web.config文件,然后一个bin目录与我所有的dll包括log4net.dll和log4net.config。 我试图将该配置文件复制到我的应用程序的根目录中,但未成功。

我也试着放置 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 声明,我的WCF的AssemblyInfo.cs中(它最初是在utils的的AssemblyInfo.cs中),但没有成功。

感谢您的帮助,欢迎任何想法!

回答

1

我很确定log4net没有找到配置文件。

我有同样的问题,我想我通过在web.config文件中包含log4net配置文件的完整路径的应用程序设置来解决它。在我的包装中,我确定如果log4net尚未配置,则通过调用ConfigureAndWatch方法来配置log4net。

或者,您可以简单地将log4net配置复制到web.config文件(但我不会那样做,因为您没有能力更改正在运行的系统的日志设置)。在这种情况下,你需要这个(如果你喜欢或者一些其他文件)添加到您的AssemblyInfo.cs:

[assembly: log4net.Config.XmlConfigurator()] 

如果仍然没有帮助那么我建议打开internal debugging

+0

嗨Stefan,谢谢你的回答。我尝试了你的最后一个提议(把配置放在web.config中),但没有成功......我从AssemblyInfo文件中删除了所有的“汇编”条目,但它没有改变任何东西......我错过了什么吗? – Shimrod 2010-09-13 11:20:10

+0

看到我修改的答案。如果你在web.config中有配置,你仍然需要告诉log4net加载它。对不起,没有解释清楚。 – 2010-09-13 11:44:52

+0

它仍然没有工作......我也尝试硬编码配置文件的路径,并使用ConfigureAndWatch,但我得到一个访问被拒绝的异常(SecurityException)......这真的很奇怪,因为它是在相同的目录中应用程序。 – Shimrod 2010-09-13 12:41:55