Azure网站 - 如何获取服务器错误详细信息(截断的跟踪文件)

时间:2015-10-10 06:01:58

标签: asp.net azure

我正在使用Azure Web API 2.我的客户端遇到了大约500个错误,我正在试图找出原因。我在Azure门户中打开了跟踪,没有截断的文件,我看到了一些很棒的信息,如:

235. - GENERAL_RESPONSE_ENTITY_BUFFER 
{"Message":...,"ExceptionMessage"...,"StackTrace":".....

问题是我的日志文件被截断为1MB。 (发布的JSON数据量可能很大,这会占用日志空间。)

我在LogFiles / DetailedErrors中看到一些可能很好的.htm文件,但它们是没有任何细节或跟踪信息的通用页面。

在Web.Config中,我设置了<customErrors mode="Off" />。这增加了跟踪文件的细节,但没有添加到DetailedErrors htm文件。

问题:

1)我可以增加跟踪文件的最大大小吗? (我尝试使用maxLogFileSizeKB失败,但不知道在哪里放置它,大概是在Web.Config中。)

2)从服务器上的LogFiles目录中查看有关服务器错误的堆栈跟踪信息的任何其他方法,或其他方式?

2 个答案:

答案 0 :(得分:0)

我认为您的问题可能是登录到错误的地方。存储日志有​​三个不同的位置,但预览门户使其不如旧的Azure门户清晰。日志记录文档仍然会将您定向到要设置的旧门户,您可以登录Blob存储或表存储。 https://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/。记录到表可能不那么有限。

答案 1 :(得分:0)

虽然我无法增加日志大小,但我能够使用k获取跟踪信息。我不需要任何特殊的错误处理,所以只是收到通知对我来说已经足够了。这适用于API(2)控制器。

1)在App_Start / WebApiConfig.cs中,我添加了以下行

IExceptionLogger

2)创建我的config.Services.Add(typeof(IExceptionLogger), new ApiErrorLogger()); 班级

ApiErrorLogger

我不必使用public class ApiErrorLogger : ExceptionLogger { public override void Log(ExceptionLoggerContext context) { addLogError(context.Request.RequestUri.ToString(), context.Exception.Message, context.Exception.StackTrace); } public static void addLogError(string uri, string message, string stackTrace) { // Store data in Azure table } } ,这很好,我可以在Azure门户中关闭跟踪(资源非常昂贵)。