Artikel ini menjelaskan kemampuan pengelogan galat pada API Protokol Transfer Hiperteks (HTTP).
Beberapa galat yang terjadi pada aplikasi berbasis HTTP ditangani secara otomatis oleh API HTTP daripada dikembalikan ke aplikasi untuk ditangani. Perilaku ini terjadi karena frekuensi galat semacam ini jika dibiarkan dapat membanjiri log peristiwa atau pegangan aplikasi.
Topik berikut ini menjelaskan aspek yang berbeda-beda pada pengelogan galat API HTTP:
Konfigurasi pengelogan galat API HTTP
Untuk meminta kami mengkonfigurasi pengelogan galat API HTTP, buka bagian "
Perbaiki ini untuk saya". Apabila Anda lebih suka mengkonfigurasi pengelogan galat API HTTP sendiri, buka bagian "
Biarkan saya memperbaiki sendiri".
Perbaiki ini untuk saya
Untuk memperbaiki masalah ini secara otomatis, klik tombol atau tautan
Fix it. Di kotak dialog
Unduh Berkas, klik
Jalankan kemudian ikuti langkah-langkah di Wisaya Fix it.
Catatan- Wisaya ini mungkin hanya tersedia dalam bahasa Inggris. Namun, perbaikan otomatis juga dapat berfungsi untuk Windows versi bahasa lainnya.
- Jika Anda tidak berada di depan komputer yang mengalami masalah, simpan solusi Fix it ke kandar flash atau CD, kemudian jalankan di komputer yang mengalami masalah.
Biarkan saya memperbaiki sendiri
Tiga nilai registri di bawah
HTTP \kunci Parameter mengontrol pengelogan galat API HTTP. Kunci-kunci tersebut terdapat pada kunci registri di bawah ini:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Catatan Lokasi dan bentuk nilai konfigurasi dapat berubah di versi Sistem Operasi Microsoft Windows yang lebih baru.
Anda harus memiliki kredensial sebagai Administrator/Sistem Lokal untuk mengubah nilai registri, dan untuk melihat atau mengubah berkas log dan berkas yang menampungnya.
Informasi konfigurasi di dalam nilai registri akan dibaca ketika pengandar API HTTP memulai. Maka dari itu, jika Anda mengubah pengaturannya, Anda harus berhenti, kemudian mulai ulang pengandar untuk membaca nilai yang baru. Untuk melakukannya, ketik perintah konsol berikut ini:
net stop http
net start http
Konvensi penamaan berikut ini digunakan untuk menamai berkas log:
httperr + nomor urut + .log
Contoh: httperr4.log
Berkas log akan disiklus saat mencapai ukuran maksimum yang disebutkan nilai registri
ErrorLogFileTruncateSize. Nilai ini tidak boleh kurang dari 1 megabyte (MB).
Jika konfigurasi pengelogan galat tidak valid, atau jika terjadi kegagalan jenis apapun ketika API HTTP ditulis pada berkas log, API HTTP menggunakan pengelogan kejadian untuk memberitahukan administrator bahwa pengelogan galat tidak terjadi.
Tabel berikut ini mendeskripsikan nilai konfigurasi registri.
Perkecil tabel iniPerbesar tabel ini
| Nilai registri | Deskripsi |
| EnableErrorLogging | Sebuah DWORD yang dapat Anda tetapkan menjadi TRUE untuk mengaktifkan pengelogan galat atau menjadi FALSE untuk menonaktifkannya. Nilai asalinya adalah TRUE. |
| ErrorLogFileTruncateSize | Sebuah DWORD yang menentukan ukuran maksimum berkas log galat, dalam byte. Nilai asali adalah satu MB (0x100000).
Catatan Nilai yang dimasukkan tidak boleh lebih kecil daripada nilai asali. |
| ErrorLoggingDir | Sebuah Untai yang menetapkan berkas di mana API HTTP akan menaruh berkas pengelogan.
API HTTP akan membuat subfolder HTTPERR pada folder tersebut, kemudian menyimpan berkas log di dalam subfolder. Subfolder dan berkas log menerima pengaturan perizinan yang sama. Administrator dan Akun Sistem Lokal memiliki akses penuh. Pengguna lain tidak memiliki akses.
Berikut adalah folder asali jika folder tidak disebutkan di dalam registri: %SystemRoot%\System32\LogFiles
Catatan Nilai untai ErrorLoggingDir harus merupakan jalur lokal yang memenuhi syarat. Namun, jalur tersebut boleh mengandung %SystemRoot%. Kandar jaringan atau berbagi jaringan tidak dapat digunakan. |
Format log galat API HTTP
Secara umum, berkas log galat API HTTP memiliki format yang sama dengan log galat W3C, kecuali bahwa berkas log galat API HTTP tidak memiliki judul kolom. Tiap baris pada log galat API HTTP mencatat satu galat. Kolom muncul dalam urutan yang spesifik. Karakter satu spasi (0x0020) memisahkan tiap kolom dari kolom sebelumnya. Pada tiap kolom, tanda plus (0x002B) akan menggantikan karakter spasi, tab, dan karakter kontrol yang tidak dapat dicetak.
Tabel berikut ini menandakan kolom dan urutan kolom dalam catatan log galat.
Perkecil tabel iniPerbesar tabel ini
| Kolom | Deskripsi |
| Tanggal | Kolom tanggal mengikuti format W3C. Kolom ini berdasarkan Coordinated Universal Time (UTC). Kolom tanggal selalu berisi 10 karakter dalam bentuk YYYY-MM-DD. Contohnya, 1 Mei 2003 ditulis sebagai 2003-05-01. |
| Waktu | Kolom waktu mengikuti format W3C. Kolom ini berdasarkan UTC. Kolom tanggal selalu berisi 8 karakter dalam bentuk MM:HH:SS. Contohnya, pukul 5:30 PM (UTC) ditulis sebagai 17:30:00. |
| Alamat IP Klien | Alamat IP klien yang terpengaruh. Nilai dalam kolom ini dapat berupa alamat IPv4 atau alamat IPv6. Jika alamat IP klien adalah alamat IPv6, kolom ScopeId juga dimasukkan ke dalam alamat. |
| Port Klien | Nomor port untuk klien yang terpengaruh. |
| Alamat IP Server | Alamat IP server yang terpengaruh. Nilai dalam kolom ini dapat berupa alamat IPv4 atau alamat IPv6. Jika alamat IP server adalah alamat IPv6, kolom ScopeId juga dimasukkan ke dalam alamat. |
| Port Server | Nomor port dari server yang terpengaruh. |
| Versi Protokol | Versi dari protokol yang digunakan.
Jika sambungan tidak dipilah secara memadai untuk menentukan versi protokol, tanda penghubung (0x002D) digunakan sebagai pengisi kolom yang kosong.
Jika nomor versi utama dan nomor versi tambahan yang dipilah ternyata lebih dari atau sama dengan 10, versi akan dicatat ke dalam log sebagai HTTP/?.?. |
| Kata kerja | Kata kerja menyatakan permintaan terakhir yang dipilah telah dilewatkan. Kata kerja tak diketahui akan dimasukkan, namun kata kerja dengan lebih dari 255 byte akan dipendekkan menjadi sepanjang ini. Jika kata kerja tidak tersedia, tanda penghubung (0x002D) akan digunakan sebagai pengganti kolom yang kosong. |
| CookedURL + Kueri | URL dan permintaan mana pun yang terhubung dengannya akan dicatat ke dalam log sebagai satu kolom dan dipisahkan oleh tanda tanya (0x3F). Kolom ini dipendekkan menjadi sepanjang batasan 4096 byte.
Jika URL ini telah dipilah ("cooked"), maka akan dicatat ke dalam log dengan konversi halaman kode lokal, dan dianggap sebagai kolom Unicode.
Jika URL ini belum dipilah ("cooked") pada saat pengelogan, maka akan disalin seluruhnya, tanpa konversi menjadi Unicode.
Jika API HTTP tidak dapat memilah URL ini, tanda penghubung (0x002D) akan digunakan sebagai pengganti kolom yang kosong. |
| Status Protokol: | Status protokol tidak dapat melebihi 999.
Jika status protokol dari respons pada permintaan tersedia, maka akan dicatat ke dalam log pada kolom ini.
Jika status protokol tidak tersedia, tanda penghubung (0x002D) akan digunakan sebagai pengganti kolom yang kosong. |
| SiteId | Tidak digunakan pada API HTTP versi ini. Tanda penghubung (0x002D) untuk pengisi selalu ada dalam kolom ini. |
| Frasa Alasan | Kolom ini berisi untai yang menunjukkan jenis galat yang sedang dicatat ke dalam log. Kolom ini tidak boleh kosong. |
| Nama Antrian | Ini adalah permintaan nama antrian.
|
Baris berikut ini adalah contoh dari log galat 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
Jenis galat yang dicatat oleh log API HTTP
API HTTP mencatat log galat yang merespons ke klien, Waktu sambungan habis, permintaan yang ditinggalkan, dan sambungan yang putus yang ditangani dengan tidak benar.
Daftar berikut ini menunjukkan jenis galat yang dicatat oleh log API HTTP:
- Merespons ke klien API HTTP mengirimkan respons galat ke klien, contohnya, galat 400 yang disebabkan oleh galat pemilahan saat penerimaan permintaan terakhir kali. Setelah API HTTP mengirimkan respons galat, maka sambungan akan terputus.
- Waktu sambungan habis API HTTP kehabisan waktu sambungan. Jika permintaan tertunda saat waktu sambungan habis, permintaan digunakan untuk menyediakan informasi lebih lanjut mengenai sambungan dalam log galat.
- Permintaan yang ditinggalkan Proses mode pengguna berhenti secara tiba-tiba ketika masih ada permintaan yang mengantri yang diarahkan ke proses tersebut. API HTTP mencatat ke dalam log permintaan yang ditinggalkan ke dalam log galat.
Jenis galat yang spesifik ditunjukkan oleh untai
Frasa Alasan yang selalu muncul pada akhir kolom dari tiap baris galat. Tabel berikut ini menunjukkan Frasa Alasan API HTTP.
Perkecil tabel iniPerbesar tabel ini
| Frasa Alasan | Deskripsi
|
| AppOffline | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan tidak tersedia karena galat aplikasi menyebabkan aplikasi dibawa luring. |
| AppPoolTimer | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan tidak tersedia karena proses pool aplikasi terlalu sibuk menangani permintaan. |
| AppShutdown | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan tidak tersedia karena aplikasi menutup secara otomatis sebagai respons atas kebijakan administrator. |
| BadRequest | Galat pemilahan terjadi saat memroses suatu permintaan. |
| Client_Reset | Sambungan antara klien dengan server tertutup sebelum permintaan dapat diajukan ke proses pengerjaan. Penyebab terjadinya yang paling umum adalah klien terlalu cepat menutup sambungan ke server. |
| Connection_Abandoned_By_AppPool | Proses pengerjaan dari pool aplikasi berhenti secara tiba-tiba atau mengabaikan permintaan yang tertunda dengan menutup pegangan. |
| Connection_Abandoned_By_ReqQueue | Proses pengerjaan dari pool aplikasi berhenti secara tiba-tiba atau mengabaikan permintaan yang tertunda dengan menutup pegangan. Khusus untuk Windows Vista dan Windows Server 2008. |
| Connection_Dropped | Sambungan antara klien dan server tertutup sebelum server dapat mengirimkan paket respons akhir. Penyebab terjadinya yang paling umum adalah klien terlalu cepat menutup sambungan ke server. |
| Connection_Dropped_List_Full | Daftar koneksi yang terputus antara klien dan server telah penuh. Khusus untuk Windows Vista dan Windows Server 2008. |
| ConnLimit | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan tidak tersedia karena tingkat batas sambungan situs telah tercapai atau melebihi. |
| Connections_Refused | Memori NonPagedPool kernel turun sampai kurang dari 20MB dan http.sys berhenti menerima sambungan baru |
| Tidak aktif | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan ini tidak tersedia karena administrator telah membawa aplikasi ke luring. |
| EntityTooLarge | Entitas melebihi ukuran maksimum yang diizinkan. |
| FieldLength | Melebihi batas panjang kolom. |
| Larangan | Elemen atau urutan yang dilarang ditemukan saat memilah. |
| Judul | Terjadi galat pemilahan di judul. |
| Nama host | Galat pemilahan terjadi saat memroses sebuah Nama host. |
| Internal | Galat server internal terjadi (galat HTTP 500). |
| Invalid_CR/LF | Telah terjadi pengembalian pembawa atau umpan baris ilegal. |
| LengthRequired | Nilai panjang yang dibutuhkan telah hilang. |
| Tidak Dapat Diterapkan | Galat layanan tidak tersedia terjadi (galat HTTP 503). Layanan tidak tersedia karena terjadi galat internal (misalnya kegagalan alokasi memori). |
| Tidak Diterapkan | Terjadi galat yang tidak diterapkan (galat HTTP 501), atau terjadi galat layanan tidak tersedia (galat HTTP 503) karena pengkodean transfer tidak dikenal. |
| Nomor | Galat pemilahan terjadi saat memroses suatu nomor. |
| Prakondisi | Prakondisi yang dibutuhkan telah hilang. |
| QueueFull | Terjadi galat layanan tidak tersedia (galat HTTP 503). Layanan tidak tersedia karena permintaan antrian aplikasi sudah penuh. |
| RequestLength | Melebihi batas panjang permintaan. |
| Timer_AppPool | Sambungan kedaluwarsa karena permintaan yang menunggu terlalu lama dalam antrian pool aplikasi untuk aplikasi server supaya membagi dan memrosesnya. Durasi waktu habis adalah ConnectionTimeout. Secara asali, nilai ini ditetapkan ke 2 menit. |
| Timer_ConnectionIdle | Sambungan kedaluwarsa dan tetap diam. Durasi asali ConnectionTimeout adalah dua menit. |
| Timer_EntityBody | Sambungan kedaluwarsa sebelum badan entitas permintaan datang. Ketika sudah jelas bahwa suatu permintaan memiliki badan entitas, API HTTP akan menghidupkan penghitung waktu Timer_EntityBody. Pada awalnya, batas penghitung waktu ini disetel ke nilai ConnectionTimeout (biasanya 2 menit). Tiap kali indikasi data lain diterima dalam permintaan ini, API HTTP akan mereset penghitung waktu untuk memberikan sambungan dua menit tambahan (atau waktu berapa pun yang ditetapkan di dalam ConnectionTimeout). |
| Timer_HeaderWait | Sambungan kedaluwarsa karena pemilahan judul untuk permintaan memakan waktu lebih dari dua menit. |
| Timer_MinBytesPerSecond | Sambungan kedaluwarsa karena klien tidak menerima respons pada kecepatan yang wajar. Kecepatan pengiriman respons lebih lambat daripada kecepatan asali 240 byte/detik. Kecepatan ini dapat dikontrol dengan properti metabase MinFileBytesPerSec. |
| Timer_ReqQueue | Sambungan kedaluwarsa karena permintaan yang menunggu terlalu lama dalam antrian pool aplikasi untuk aplikasi server untuk keluar antrian. Durasi waktu habis adalah ConnectionTimeout. Secara asali, nilai ini ditetapkan ke 2 menit. Khusus untuk Windows Vista dan Windows Server 2008 |
| Timer_Response | Dicadangkan. Saat ini tidak digunakan. |
| URL | Galat pemilahan terjadi saat memroses sebuah URL. |
| URL_Length | Sebuah URL melebihi ukuran maksimum yang diizinkan. |
| Kata kerja | Galat pemilahan terjadi saat memroses sebuah kata kerja. |
| Version_N/S | Terjadi galat versi tidak didukung (galat HTTP 505). |
Untuk informasi selengkapnya tentang menambah kolom log untuk pengelogan galat IIS HTTP, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
832975
(http://support.microsoft.com/kb/832975/
)
Properti tambahan sekarang tersedia untuk pengelogan dalam berkas Httperr#.log di IIS 6.0 dan IIS 7.0
(Mungkin tersedia dalam bahasa Inggris)