Bài viết này mô tả các khả năng ghi nhật ký lỗi của API Giao thức Truyền tải Siêu văn bản (HTTP).
Một số lỗi xảy ra trong ứng dụng dựa trên HTTP được tự động xử lý bằng API HTTP thay vì được truyền trả lại cho ứng dụng để xử lý. Hành vi này xảy ra do tần suất các lỗi này có thể xuất hiện quá nhiều trong nhật ký sự kiện hoặc trình xử lý ứng dụng.
Các chủ đề sau mô tả những khía cạnh khác nhau của ghi nhật ký lỗi API HTTP:
- C?u h?nh ghi nh?t k? l?i API HTTP
Các thiết đặt đăng ký kiểm soát các lỗi trong nhật ký API HTTP, kích cỡ được cho phép tối đa của các tệp nhật ký và vị trí của các tệp nhật ký. - Đ?nh d?ng c?a nhật ký l?i API HTTP
API HTTP tạo các tệp nhật ký tuân thủ các quy ước tệp nhật ký World Wide Web Consortium (W3C). Bạn có thể sử dụng các công cụ tiêu chuẩn để phân tích cú pháp các tệp nhật ký này. Tuy nhiên, không giống như tệp nhật ký W3C, tệp nhật ký API HTTP không chứa tên cột. - Các lo?i l?i mà API HTTP ghi
HTTP API ghi l?i m?t lo?t các l?i ph? bi?n.
Cấu hình ghi nhật ký lỗi API HTTP
Để yêu cầu chúng tôi cấu hình ghi nhật ký lỗi API HTTP cho bạn, hãy đi tới phần "
Khắc phục sự cố cho tôi". Nếu bạn muốn tự cấu hình ghi nhật ký lỗi API HTTP, hãy đi tới phần "
Để tôi tự khắc phục sự cố".
Kh?c ph?c s? c? cho tôi
Đ? kh?c ph?c s? c? này t? đ?ng, hãy b?m vào nút ho?c liên k?t
Kh?c ph?c s? c?. Trong hộp thoại
Tải xuống Tệp, bấm
Chạy, rồi làm theo các bước trong Thuật sỹ Khắc phục sự cố.
Chú ý- Thuật sỹ này có thể chỉ có bằng tiếng Anh. Tuy nhiên, khắc phục sự cố t? đ?ng c?ng ho?t đ?ng đ?i v?i các phiên b?n ngôn ng? khác c?a Windows.
- Nếu bạn hiện không làm việc trên máy tính có sự cố, hãy lưu giải pháp Khắc phục sự cố vào ổ đĩa flash hoặc CD, rồi chạy trên máy tính có sự cố.
Để tôi tự khắc phục sự cố
Ba giá trị đăng ký trong khoá
Thông số HTTP kiểm soát ghi nhật ký lỗi API HTTP. Các khoá này nằm ở khoá đăng ký sau:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Chú ý Vị trí và hình thức của các giá trị cấu hình có thể thay đổi ở những phiên bản sau của hệ điều hành Microsoft Windows.
Bạn phải có uỷ nhiệm Quản trị viên/Hệ thống Cục bộ để thay đổi giá trị đăng ký và để xem hoặc sửa đổi các tệp nhật ký và cặp có chứa các giá trị đó.
Thông tin cấu hình trong giá trị đăng ký được đọc khi trình điều khiển API HTTP khởi động. Vì vậy, nếu bạn thay đổi thiết đặt, bạn phải dừng rồi khởi động lại trình điều khiển để đọc giá trị mới. Để thực hiện việc này, nhập các lệnh bàn điều khiển sau:
net stop http
net start http
Quy ước đặt tên sau được sử dụng để đặt tên tệp nhật ký:
httperr + số trình tự + .log
Ví dụ: httperr4.log
Các tệp nhật ký được tái sử dụng khi các tệp đó đạt kích cỡ tối đa mà giá trị đăng ký
ErrorLogFileTruncateSize xác định. Giá trị này không thể nhỏ hơn 1 megabyte (MB).
Nếu cấu hình của ghi nhật ký lỗi không hợp lệ hoặc nếu xảy ra bất kỳ loại lỗi nào trong khi API HTTP đang ghi vào tệp nhật ký, API HTTP sử dụng ghi nhật ký sự kiện để thông báo cho quản trị viên rằng ghi nhật ký lỗi đó hiện không xảy ra.
B?ng sau mô t? giá tr? c?u h?nh s? đăng k?.
Thu g?n b?ng nàyBung r?ng b?ng này
| Giá tr? đăng k? | Mô tả |
| EnableErrorLogging | DWORD mà bạn có thể đặt thành TRUE để cho phép ghi nhật ký lỗi hoặc thành FALSE để vô hiệu hoá ghi nhật ký lỗi. Giá tr? m?c đ?nh là TRUE. |
| ErrorLogFileTruncateSize | DWORD xác định kích cỡ tối đa của tệp nhật ký, tính bằng byte. Giá tr? m?c đ?nh là 1 MB (0x100000).
Chú ý Giá trị được xác định không thể nhỏ hơn giá trị mặc định. |
| ErrorLoggingDir | Chuỗi xác định cặp nơi API HTTP đặt tệp ghi nhật ký.
API HTTP tạo cặp con HTTPERR trong cặp được xác định, rồi sau đó lưu trữ tệp nhật ký trong cặp con. Cặp con này và tệp nhật ký nhận cùng thiết đặt quyền. Quản trị viên và Tài khoản Hệ thống Cục bộ có đầy đủ quyền truy nhập. Nh?ng ngư?i dùng khác không có quy?n truy nh?p.
Mục sau đây là cặp mặc định khi cặp không được xác định trong sổ đăng ký: %SystemRoot%\System32\LogFiles
Chú ý Giá trị chuỗi ErrorLoggingDir phải là đường dẫn cục bộ đủ điều kiện. Tuy nhiên, nó có th? ch?a các %SystemRoot%. Không thể sử dụng một ổ đĩa mạng hoặc chia sẻ mạng. |
Định dạng của nhật ký lỗi API HTTP
Thông thường, tệp nhật ký lỗi API HTTP có cùng định dạng như các nhật ký lỗi W3C, ngoại trừ rằng các tệp nhật ký lỗi API HTTP không chứa đề mục cột. Mỗi dòng của nhật ký lỗi API HTTP ghi một lỗi. Các trường xuất hiện theo trình tự cụ thể. Một ký tự dấu cách (0x0020) phân tách mỗi trường với trường trước đó. Trong mỗi trường, các dấu cộng (0x002B) thay thế các ký tự dấu cách, tab và các ký tự điều khiển không thể in được.
Bảng sau xác định các trường và trình tự các trường trong bản ghi lỗi.
Thu g?n b?ng nàyBung r?ng b?ng này
| Trường | Mô tả |
| Ngày | Trư?ng Ngày theo đ?nh d?ng W3C. Trường này dựa trên Giờ Chuẩn Quốc tế (UTC). Trường Ngày luôn có 10 ký tự theo dạng DD-MM-YYYY. Ví dụ, ngày 1 tháng 5 năm 2003 được thể hiện là 01-05-2003. |
| Giờ | Trư?ng Giờ theo đ?nh d?ng W3C. Trường này dựa trên UTC. Trường giờ luôn có 8 ký tự theo dạng HH:MM:SS. Ví dụ: 5:30 Chiều (UTC) đư?c th? hi?n là 17:30:00. |
| Đ?a ch? IP c?a Máy khách | Đ?a ch? IP c?a máy khách b? ?nh hư?ng. Giá trị trong trường này có thể là địa chỉ IPv4 hoặc địa chỉ IPv6. Nếu địa chỉ IP máy khách là địa chỉ IPv6, trường ScopeId cũng được bao gồm trong địa chỉ. |
| Cổng Máy khách | S? c?ng cho máy khách b? ?nh hư?ng. |
| Địa chỉ IP Máy chủ | Đ?a ch? IP c?a máy ch? b? ?nh hư?ng. Giá trị trong trường này có thể là địa chỉ IPv4 hoặc địa chỉ IPv6. Nếu địa chỉ IP máy chủ là địa chỉ IPv6, trường ScopeId cũng được bao gồm trong địa chỉ. |
| Cổng Máy chủ | Số cổng của máy chủ bị ảnh hưởng. |
| Phiên b?n Giao th?c | Phiên bản của giao thức đang được sử dụng.
Nếu kết nối không được phân tích cú pháp đầy đủ để xác định phiên bản giao thức, một dấu gạch nối (0x002D) được sử dụng dưới dạng trình giữ chỗ cho trường trống.
Nếu số phiên bản chính hoặc số phiên bản phụ được phân tích cú pháp là lớn hơn hoặc bằng 10, phiên bản được ghi dưới dạng HTTP/?.?. |
| Đ?ng t? | Trạng thái động từ mà yêu cầu cuối cùng được phân tích cú pháp thông qua. Các động từ không xác định được bao gồm, nhưng bất kỳ động từ nào lớn hơn 255 byte bị cắt bớt xuống độ dài này. Nếu một động từ không sẵn có, một dấu gạch nối (0x002D) được sử dụng dưới dạng trình giữ chỗ cho trường trống. |
| CookedURL + Truy v?n | URL và bất kỳ truy vấn nào liên quan đến URL đó được ghi dưới dạng một trường được phân tách bởi dấu hỏi (0x3F). Trường này được cắt bớt xuống giới hạn độ dài của trường là 4096 byte.
Nếu URL này đã được phân tích cú pháp ("cooked"), URL đó được ghi với chuyển đổi trang mã cục bộ và được xem là trường Unicode.
Nếu URL này không được phân tích cú pháp ("cooked") trong lúc ghi, URL đó được sao chép chính xác mà không có bất kỳ chuyển đổi Unicode nào.
Nếu API HTTP không thể phân tích cú pháp URL này, một dấu gạch nối (0x002D) được sử dụng dưới dạng trình giữ chỗ cho trường trống. |
| Tình trạng Giao thức | Tình trạng giao thức không thể lớn hơn 999.
Nếu có tình trạng giao thức của phản hồi cho một yêu cầu, tình trạng đó sẽ được ghi trong trường này.
Nếu không có tình trạng giao thức, một dấu gạch nối (0x002D) được sử dụng dưới dạng trình giữ chỗ cho trường trống. |
| SiteId | Không đư?c s? d?ng trong phiên b?n này c?a API HTTP. M?t d?u gạch n?i gi? ch? (0x002D) luôn xu?t hi?n trong trường này. |
| Cụm từ Lý do | Trường này có chứa chuỗi xác định loại lỗi đang được ghi. Trường này không bao giờ được để trống. |
| Tên Hàng đợi | Trường này yêu cầu tên hàng đ?i.
|
Các dòng mẫu sau là từ một nhật ký lỗi API HTTP:
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond
Loại lỗi mà API HTTP ghi lại
API HTTP ghi trả lời lỗi cho máy khách, kết nối hết thời gian chờ, yêu cầu đơn lẻ và kết nối bị gián đoạn mà được xử lý không đúng.
Danh sách sau xác định các loại lỗi mà API HTTP ghi:
- Trả lời máy khách API HTTP gửi trả lời lỗi cho máy khách, ví dụ: một lỗi 400 do lỗi phân tích cú pháp trong yêu cầu nhận được cuối cùng. Sau khi API HTTP gửi trả lời lỗi, API kết thúc kết nối.
- Kết nối hết thời gian chờ API HTTP hết thời gian chờ kết nối. Nếu một yêu cầu đang chờ xử lý khi kết nối hết thời gian chờ, yêu cầu được sử dụng để cung cấp thêm thông tin về kết nối trong nhật ký lỗi.
- Yêu cầu đơn lẻ Một quy trình chế độ người dùng thoát đột ngột trong khi vẫn có các yêu cầu hàng đợi được định tuyến tới quy trình đó. API HTTP ghi các yêu cầu đơn lẻ trong nhật ký lỗi.
Các loại lỗi cụ thể được chuỗi
Cụm từ Lý do chỉ định mà luôn xuất hiện là trường cuối cùng của từng dòng lỗi. B?ng sau đây xác đ?nh C?m t? L? do API HTTP.
Thu g?n b?ng nàyBung r?ng b?ng này
| Cụm từ Lý do | Mô tả
|
| AppOffline | M?t d?ch v? không có l?i x?y ra (m?t l?i HTTP 503). Dịch vụ không khả dụng do lỗi ứng dụng làm cho ứng dụng ngoại tuyến. |
| AppPoolTimer | M?t d?ch v? không có l?i x?y ra (m?t l?i HTTP 503). Dịch vụ không khả dụng do quy trình nhóm ứng dụng quá bận không thể giải quyết yêu cầu. |
| AppShutdown | Đã xảy ra lỗi d?ch v? không có (m?t l?i HTTP 503). Dịch vụ không khả dụng vì ứng dụng tự động tắt để trả lời chính sách quản trị viên. |
| BadRequest | M?t l?i phân tích cú pháp đ? x?y ra trong khi x? l? m?t yêu c?u. |
| Client_Reset | Kết nối giữa máy khách và máy chủ bị đóng trước khi yêu cầu có thể được chỉ định cho quy trình xử lý riêng biệt. Nguyên nhân phổ biến nhất của hành vi này là máy khách đóng kết nối với máy chủ sớm. |
| Connection_Abandoned_By_AppPool | Quy trình xử lý riêng biệt từ nhóm ứng dụng đã đóng đột ngột hoặc bỏ qua một yêu cầu đang chờ xử lý bằng cách đóng ô điều khiển. |
| Connection_Abandoned_By_ReqQueue | Quy trình xử lý riêng biệt từ nhóm ứng dụng đã đóng đột ngột hoặc bỏ qua một yêu cầu đang chờ xử lý bằng cách đóng ô điều khiển. Cụ thể cho Windows Vista và Windows Server 2008. |
| Connection_Dropped | Kết nối giữa máy chủ và máy khách bị đóng trước khi máy chủ có thể gửi gói trả lời cuối cùng. Nguyên nhân phổ biến nhất của hành vi này là máy khách đóng kết nối với máy chủ sớm. |
| Connection_Dropped_List_Full | Danh sách kết nối bị gián đoạn giữa máy khách và máy chủ đã đầy. Cụ thể cho Windows Vista và Windows Server 2008. |
| ConnLimit | Đã xảy ra lỗi d?ch v? không có (m?t l?i HTTP 503). Dịch vụ không khả dụng bởi vì đã đạt hoặc vượt quá giới hạn kết nối ở cấp độ trang web. |
| Connections_Refused | Bộ nhớ NonPagedPool lõi đã giảm xuống dưới 20MB and http.sys đã ngừng nhận kết nối mới. |
| Vô hiệu hóa | Đã xảy ra lỗi d?ch v? không có (m?t l?i HTTP 503). Dịch vụ không khả dụng do quản trị viên đã làm cho ứng dụng ngoại tuyến. |
| EntityTooLarge | Một thực thể vượt quá kích cỡ tối đa được cho phép. |
| FieldLength | Đã vượt quá giới hạn độ dài của trường. |
| Bị cấm | Đã gặp phải m?t yếu tố hoặc chuỗi bị cấm trong khi phân tích cú pháp. |
| Tiêu đ? | Đã xảy ra l?i phân tích cú pháp ? m?t tiêu đ?. |
| Tên máy ch? | Đã xảy ra l?i phân tích cú pháp trong khi x? l? Tên máy chủ. |
| N?i b? | Đã xảy ra l?i máy ch? n?i b? (m?t l?i HTTP 500). |
| Invalid_CR/LF | Đã xảy ra m?t tr? v? v?n chuy?n b?t h?p pháp ho?c đư?ng dây ngu?n c?p d? li?u. |
| LengthRequired | Giá tr? độ dài yêu cầu bị thiếu. |
| KHÔNG SẴN CÓ | Đã xảy ra lỗi d?ch v? không có (m?t l?i HTTP 503). Dịch vụ không khả dụng do lỗi nội bộ (như lỗi phân bổ bộ nhớ) đã xảy ra. |
| N/I | Đã xảy ra lỗi không được triển khai (lỗi HTTP 501) hoặc đã xảy ra lỗi dịch vụ không khả dụng (lỗi HTTP 503) do việc mã hoá chuyển không xác định. |
| Số: | Đã xảy ra lỗi phân tích cú pháp trong khi x? l? m?t số. |
| Đi?u ki?n tiên quy?t | M?t đi?u ki?n tiên quy?t được yêu cầu bị thiếu. |
| QueueFull | Đã xảy ra lỗi d?ch v? không có (m?t l?i HTTP 503). Dịch vụ không khả dụng bởi hàng đợi yêu cầu ứng dụng đã đầy. |
| RequestLength | Đã vượt quá giới hạn độ dài của yêu cầu. |
| Timer_AppPool | Kết nối hết hạn do yêu cầu đã đợi quá lâu trong hàng đợi nhóm ứng dụng để ứng dụng máy chủ bỏ xếp hàng đợi và xử lý yêu cầu đó. Khoảng thời gian chờ này là ConnectionTimeout. Theo m?c đ?nh, giá tr? này đư?c đặt ở 2 phút. |
| Timer_ConnectionIdle | K?t n?i đ? h?t h?n và v?n c?n nhàn r?i. Khoảng thời gian ConnectionTimeout mặc định là 2 phút. |
| Timer_EntityBody | K?t n?i đ? hết hạn trư?c khi nội dung thực thể yêu cầu tới. Khi rõ ràng là yêu cầu có nội dung thực thể, API HTTP bật thiết bị bấm giờ Timer_EntityBody. Ban đầu, giới hạn của thiết bị bấm giờ này được đặt ở giá trị ConnectionTimeout (thường là 2 phút). Mỗi khi dấu hiệu dữ liệu khác được nhận trên yêu cầu này, API HTTP đặt lại thiết bị bấm giờ để cung cấp cho kết nối thêm hai phút nữa (hoặc bất kỳ giá trị nào được xác định trong ConnectionTimeout). |
| Timer_HeaderWait | Kết nối hết hạn do việc phân tích cú pháp tiêu đề cho một yêu cầu mất nhiều thời gian hơn giới hạn mặc định 2 phút. |
| Timer_MinBytesPerSecond | Kết nối hết hạn do máy khách không nhận được trả lời với tốc độ hợp lý. Tốc độ gửi trả lời chậm hơn mặc định 240 byte/giây. Điều này có thể được điều khiển bằng thuộc tính siêu dữ liệu MinFileBytesPerSec. |
| Timer_ReqQueue | Kết nối hết hạn bởi vì yêu cầu đã đợi quá lâu trong hàng đợi nhóm ứng dụng để ứng dụng máy chủ bỏ xếp hàng đợi. Khoảng thời gian chờ này là ConnectionTimeout. Theo m?c đ?nh, giá tr? này đư?c đặt ở 2 phút. Cụ thể cho Windows Vista và Windows Server 2008 |
| Timer_Response | Dành riêng. Hiện không được sử dụng. |
| Timer_SslRenegotiation
| Kết nối hết hạn do sự thương lượng lại SSL giữa máy khách và máy chủ mất nhiều thời gian hơn thời gian chờ mặc định 2 phút.
|
| URL | Đã xảy ra lỗi phân tích cú pháp khi xử lý URL. |
| URL_Length | M?t URL vư?t quá kích cỡ cho phép tối đa. |
| Đ?ng t? | Đã xảy ra l?i phân tích cú pháp trong khi x? l? m?t động từ. |
| Version_N/S | Đã xảy ra lỗi phiên b?n không được h? tr? (m?t l?i HTTP 505). |
Để biết thêm thông tin về cách thêm các trường ghi nhật ký bổ sung cho ghi nhật ký lỗi HTTP, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
832975
(http://support.microsoft.com/kb/832975/
)
Các thuộc tính bổ sung hiện khả dụng để ghi trong tệp Httperr#.log trong IIS 6.0 và IIS 7.0
(Trang này có thể có bằng tiếng Anh)
ID c?a bài: 820729 - L?n xem xét sau cùng: 30 Tháng Mười Một 2012 - Xem xét l?i: 4.0
| kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729 |