Mar*_*tin 2 asp.net iis logging web-services
我正在 IIS 6.0 上运行 ASP.NET WebService,它%systemroot%\System32\LogFiles\W3SVC1
在客户站点的日志中显示了大量 HTTP 500(可能只是 WebService 的例外) 。
是否可以在不使用 IIS 或 IIS 插件修改 WebService 的情况下记录这些 HTTP 响应的内容和请求?
我想过使用Wireshark或Fiddler来嗅探 HTTP 流量,但我更愿意在 IIS 中打开一个选项来让他记录通信(这应该不难,因为它无论如何都会记录请求的 URL)
我们在使用log4net之前已经这样做了。以下是高级步骤:
在您的 web.config 中创建一个 log4net 部分
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
Run Code Online (Sandbox Code Playgroud)
和...
...
</system.web>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\mysvc.log" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="1000000" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<level value="DEBUG" />
<!--<priority value="DEBUG" />-->
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
...
在您的 Global.asax.cs 中调用 log4net Configure()
protected void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)
在 Web 服务 .cs 文件的顶部,声明一个 log4net ILog 实例
public class MyService : System.Web.Services.WebService {
{
private static readonly ILog log = LogManager.GetLogger(typeof(MyService));
Run Code Online (Sandbox Code Playgroud)
在您的 Web 服务方法中,捕获异常并记录它们
[WebMethod]
public void DoSomething()
{
try
{
// business logic
}
catch(Exception ex)
{
log.Error("Something bad happened", ex);
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
完成这些步骤后,在上面的示例中,c:\mysvc.log中将出现任何异常
归档时间: |
|
查看次数: |
11816 次 |
最近记录: |