我正在使用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目录中查看有关服务器错误的堆栈跟踪信息的任何其他方法,或其他方式?
答案 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门户中关闭跟踪(资源非常昂贵)。