【发布时间】:2013-08-19 08:58:40
【问题描述】:
我有一个 WCF RESTful Web 服务,我想知道是否可以在每个方法调用之前和每个方法调用之后记录当前时间(我的意思是在某些操作合同中定义的方法)。我不想将日志记录包含在方法本身中。 我需要在服务器端登录。
【问题讨论】:
我有一个 WCF RESTful Web 服务,我想知道是否可以在每个方法调用之前和每个方法调用之后记录当前时间(我的意思是在某些操作合同中定义的方法)。我不想将日志记录包含在方法本身中。 我需要在服务器端登录。
【问题讨论】:
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>
【讨论】:
尝试以下简单的方法进行测试而不是生产:
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 文件结合起来,以确保在未转动的情况下不会出现任何问题。
【讨论】:
//Execute the service... - 这是您必须调用服务的地方。