我在尝试使用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中的“publish”命令发布我的服务,因此在我的应用程序目录所在的服务器上,有一个svc文件、一个web.config文件,然后是一个bin目录,其中包含所有dll,包括log4net.dll和log4net.config。
我试图复制应用程序根目录中的配置文件,但没有成功。
我也试着把
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
在wcf的assemblyinfo.cs中的语句(它最初在utils的assemblyinfo.cs中),但没有任何成功。
谢谢你的帮助,欢迎有任何想法!