尝试使用log4net登录我的应用程序时遇到问题。 我的应用程序包含一个WCF服务,以及连接到它的客户端。 在客户端进行日志记录不是问题,一切都运行良好。
以下是我的服务器端:
我的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文件,然后是一个包含我所有dll的bin目录log4net.dll和log4net.config。 我试图在我的应用程序的根目录中复制该配置文件但没有成功。
我也试过放置
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
在我的WCF的AssemblyInfo.cs中声明(它最初在Utils的AssemblyInfo.cs中),但没有任何成功。
感谢您的帮助,欢迎任何想法!
答案 0 :(得分:1)
我很确定log4net找不到配置文件。
我有同样的问题,我想我通过在web.config文件中包含应用程序设置来解决它,该文件包含log4net配置文件的完整路径。在我的包装器中,如果尚未配置log4net,我确保通过调用ConfigureAndWatch
方法来配置log4net。
或者您可以简单地将log4net配置复制到web.config文件(但我不会这样做,因为您无法更改正在运行的系统的日志设置)。在这种情况下,您需要将此添加到AssemblyInfo.cs(或者您喜欢的其他文件):
[assembly: log4net.Config.XmlConfigurator()]
如果仍然无效,我建议您启用internal debugging。