我有一个WCF RESTful Web服务,我想知道是否可以在每次方法调用之前和每次方法调用之后记录当前时间(我的意思是在某些操作契约中定义的方法)。我不想在方法本身中包含日志记录。 我需要在服务器端进行登录。
答案 0 :(得分:1)
除非您向其添加日志记录,否则WCF应用程序不会写入日志。看看http://msdn.microsoft.com/en-us/library/ms733025.aspx 您可以尝试在配置xml文件中添加侦听器。
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
答案 1 :(得分:0)
尝试以下简单方法进行测试而非生产:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine(DateTime.Now.ToString()); //START
wcfService.ActionCallMethod(); //THIS IS AN EXAMPLE SERVICE CALL WHERE YOU WILL MAKE THE CALL
stringBuilder.AppendLine(DateTime.Now.ToString()); //END
System.IO.File.WriteAllLines(@"c:\logfile.txt", stringBuilder.ToString());
您还可以使用数据库写入/日志操作替换该文件。我建议创建一个自定义类,您可以调用它来传递一个持久化到数据库自定义日志表的日期时间戳。
我会在开发和测试过程中将它与WCF svclog文件结合起来,以确保在未转动的情况下不会结石。