【发布时间】:2010-09-13 19:43:33
【问题描述】:
我在尝试使用 log4net 记录我的应用程序时遇到问题。 我的应用程序由 WCF 服务和连接到它的客户端组成。 在客户端登录不是问题,一切正常。
这是我的服务器端的制作方式:
- 一个 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。有问题。没有创建日志文件。 我用谷歌搜索并找到了一些线索(一般访问权限,但我使用 ProcMon 并没有找到对所需文件或目录的调用)。
我现在有点迷茫,不知道该尝试什么。
我在 Visual Studio 中使用“发布”命令发布我的服务,所以在服务器上我有我的应用程序目录,里面有一个 svc 文件、一个 web.config 文件,然后是一个包含我所有 dll 的 bin 目录,包括log4net.dll 和 log4net.config。 我试图将该配置文件复制到我的应用程序的根目录中,但没有成功。
我也尝试将
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
我的 WCF 的 AssemblyInfo.cs 中的声明(它最初在 Utils 的 AssemblyInfo.cs 中),但没有任何成功。
感谢您的帮助,欢迎任何想法!
【问题讨论】: