Bagikan melalui


Pembuatan dan pengalihan log IIS

Catatan

Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

Peringatan

Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

Penting

Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.

Modul ASP.NET Core mengalihkan output konsol stdout dan stderr ke disk jika stdoutLogEnabled atribut aspNetCore dan stdoutLogFile elemen diatur. Folder apa pun di stdoutLogFile jalur dibuat oleh modul saat file log dibuat. Kumpulan aplikasi harus memiliki akses tulis ke lokasi tempat log ditulis (gunakan IIS AppPool\{APP POOL NAME} untuk memberikan izin tulis, di mana tempat penampung {APP POOL NAME} adalah nama kumpulan aplikasi).

Log tidak diputar, kecuali terjadi daur ulang/mulai ulang proses. Ini adalah tanggung jawab hoster untuk membatasi ruang disk yang digunakan log.

Menggunakan log stdout hanya disarankan untuk memecahkan masalah pengaktifan aplikasi saat menghosting di IIS atau saat menggunakan dukungan waktu pengembangan untuk IIS dengan Visual Studio, bukan saat men-debug secara lokal dan menjalankan aplikasi dengan IIS Express.

Jangan gunakan log stdout untuk tujuan pengelogan aplikasi umum. Untuk pengelogan rutin di aplikasi ASP.NET Core, gunakan pustaka pengelogan yang membatasi ukuran file log dan memutar log. Untuk informasi selengkapnya, lihat penyedia pengelogan pihak ketiga.

Tanda waktu dan ekstensi file ditambahkan secara otomatis saat file log dibuat. Nama file log terdiri dengan menambahkan tanda waktu, ID proses, dan ekstensi file (.log) ke segmen stdoutLogFile terakhir jalur (biasanya stdout) yang dibatasi oleh garis bawah. stdoutLogFile Jika jalur berakhir dengan stdout, log untuk aplikasi dengan PID 1934 yang dibuat pada 2/5/2018 pukul 19:42:32 memiliki nama stdout_20180205194132_1934.logfile .

Jika stdoutLogEnabled salah, kesalahan yang terjadi pada startup aplikasi diambil dan dipancarkan ke log peristiwa hingga 30 KB. Setelah startup, semua log tambahan dibuang.

Elemen sampel aspNetCore berikut mengonfigurasi pengelogan stdout di jalur .\log\relatif . Konfirmasikan bahwa pengguna identity AppPool memiliki izin untuk menulis ke jalur yang disediakan.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Saat menerbitkan aplikasi untuk penyebaran Azure App Service, Web SDK mengatur nilai ke stdoutLogFile \\?\%home%\LogFiles\stdout. Variabel %home lingkungan telah ditentukan sebelumnya untuk aplikasi yang dihosting oleh Azure App Service.

Untuk membuat aturan filter pengelogan, lihat bagian Terapkan aturan filter log di bagian kode dari dokumentasi pengelogan ASP.NET Core.

Untuk informasi selengkapnya tentang format jalur, lihat Format jalur file pada sistem Windows.

Log diagnostik yang ditingkatkan

Modul ASP.NET Core dapat dikonfigurasi untuk menyediakan log diagnostik yang ditingkatkan. <handlerSettings> Tambahkan elemen ke <aspNetCore> elemen di web.config. debugLevel Mengatur untuk mengekspos keakuratan TRACE informasi diagnostik yang lebih tinggi:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Folder apa pun di jalur (logs dalam contoh sebelumnya) dibuat oleh modul saat file log dibuat. Kumpulan aplikasi harus memiliki akses tulis ke lokasi tempat log ditulis (gunakan IIS AppPool\{APP POOL NAME} untuk memberikan izin tulis, di mana tempat penampung {APP POOL NAME} adalah nama kumpulan aplikasi).

Nilai tingkat debug (debugLevel) dapat mencakup tingkat dan lokasi.

Tingkat (secara berurutan dari paling sedikit hingga paling verbose):

  • KESALAHAN
  • PERINGATAN
  • INFO
  • TRACE

Lokasi (beberapa lokasi diizinkan):

  • KONSOL
  • EVENTLOG
  • FILE

Pengaturan handler juga dapat disediakan melalui variabel lingkungan:

  • ASPNETCORE_MODULE_DEBUG_FILE: Jalur ke file log debug. (Default: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Pengaturan tingkat debug.

Peringatan

Jangan biarkan pengelogan debug diaktifkan dalam penyebaran lebih lama dari yang diperlukan untuk memecahkan masalah. Ukuran log tidak terbatas. Membiarkan log debug diaktifkan dapat menghabiskan ruang disk yang tersedia dan crash server atau layanan aplikasi.

Lihat Konfigurasi modul ASP.NET Core dengan web.config untuk contoh aspNetCore elemen dalam web.config file.