File Log untuk LogFile Situs <Web>

Gambaran Umum

Elemen <logFile><site> elemen berisi atribut yang memungkinkan Anda mengonfigurasi pengelogan untuk situs di IIS 7 dan yang lebih baru.

Misalnya, Anda dapat mengaktifkan atau menonaktifkan pengelogan, mengonfigurasi format file log IIS, menentukan kategori informasi untuk disimpan dalam file log, dan mengubah direktori tempat file log disimpan. Anda juga dapat menggunakan <logFile> elemen untuk mengontrol seberapa sering IIS membuat file log baru berdasarkan ukuran file log atau interval waktu dan ukuran maksimum (dalam byte) yang dapat menjadi file log.

Secara default, IIS 7 dan yang lebih baru menggunakan format file log World Wide Web Consortium (W3C). Anda dapat mengubah pengaturan ini dengan memodifikasi atribut logFormat ke IIS, NCSA, atau Kustom.

Catatan

Pengelogan ODBC diimplementasikan sebagai modul pengelogan kustom di IIS 7 dan yang lebih baru. Akibatnya, mengaktifkan dan mengonfigurasi pengelogan ODBC di IIS 7 dan yang lebih baru terdiri dari dua tindakan terpisah:

  • Mengatur atribut pengelogan ODBC di <odbcLogging> elemen . Atribut ini menentukan Nama Sumber Data Sistem (DSN), nama tabel, nama pengguna, dan kata sandi untuk koneksi ODBC.
  • Mengatur atribut pengelogan kustom yang benar dalam <logFile> elemen . Atribut ini harus mengatur format file log ke "Kustom" dan ID kelas plug-in log kustom ke "{FF16065B-DE82-11CF-BC0A-00AA006111E0}".

Untuk informasi selengkapnya tentang pengelogan ODBC, lihat <odbcLogging> elemen .

Anda dapat menentukan kategori informasi yang dicatat IIS dengan mengedit atribut logExtFileFlags . Nilai defaultnya adalah Date, , Time, UserNameClientIP, ServerIP, Method, UriStem, UriQueryTimeTaken, HttpStatus, , Win32Status, ServerPort, UserAgent, HttpSubStatus, , dan Referer.

Catatan

<logFile> Jika elemen dikonfigurasi di bagian <siteDefaults> dan di bagian <site> untuk situs tertentu, konfigurasi di bagian tersebut digunakan untuk situs tersebut<site>.

IIS 8.5 memungkinkan Anda mencatat bidang kustom selain kumpulan standar yang dicatat. Format file log harus W3C untuk menambahkan bidang kustom. Untuk informasi selengkapnya, lihat customFields.

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <logFile> tidak dimodifikasi dalam IIS 10.0.
IIS 8.5 flushByEntryCountW3CLog Menambahkan atribut untuk menentukan jumlah peristiwa yang akan disimpan di buffer sebelum dihapus ke file log. logTargetW3C Menambahkan atribut untuk menentukan bagaimana peristiwa IIS yang dicatat diproses. maxLogLineLength Menambahkan atribut untuk menentukan panjang maksimum baris dalam file log. <customFields> Menambahkan elemen anak.
IIS 8.0 Atribut logSiteId ditambahkan untuk menentukan konten bidang -sitename, dan referer bendera ditambahkan ke nilai logExtFileFlags default atribut.
IIS 7.5 Elemen <logFile> tidak dimodifikasi dalam IIS 7.5.
IIS 7.0 Elemen <logFile><site> elemen diperkenalkan di IIS 7.0.
IIS 6.0 Elemen menggantikan <logFile> bagian properti pengelogan pada objek metabase IIS 6.0 IIsWebService .

Siapkan

Elemen <logFile> ini disertakan dalam penginstalan default IIS 7 dan yang lebih baru.

Bagaimana Caranya

Cara mengedit pengaturan pengelogan untuk situs

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , perluas nama server, perluas Situs, lalu klik situs Web tempat Anda ingin mengonfigurasi pengelogan.

  3. Di panel Beranda , klik dua kali Pengelogan.
    Cuplikan layar halaman Beranda Situs Web Default. Ikon untuk Pengelogan disorot.

  4. Di panel Pengelogan , pilih format file log dalam kotak Format , lalu ketik jalur ke direktori tempat Anda menyimpan file log dalam kotak Direktori atau klik Telusuri... untuk memilih direktori tempat menyimpan file log.
    Cuplikan layar halaman Pengelogan di dalam Manajer I I S.

  5. Jika Anda memilih untuk menggunakan format file log W3C:

    • Klik Pilih Bidang untuk memilih tipe informasi yang akan dicatat.
    • Dalam kotak dialog Bidang Pengelogan W3C , pilih kotak centang untuk opsi yang ingin Anda catat, kosongkan kotak centang untuk opsi yang tidak ingin Anda catat, lalu klik OK.
      Cuplikan layar kotak dialog Bidang Pengelogan W 3 C.

Cara mengonfigurasi ETW atau pengelogan file untuk log W3C

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , perluas nama server, perluas Situs, lalu pilih situs.

  3. Di panel beranda situs, klik dua kali Pengelogan.

  4. Di beranda Pengelogan , untuk Tujuan Peristiwa Log, pilih File log saja, hanya peristiwa ETW, atau File log dan peristiwa ETW.

    Cuplikan layar jendela I I S Manager yang menampilkan halaman Pengelogan.

Cara mengonfigurasi pembersihan log W3C menurut jumlah entri

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , perluas server, lalu klik dua kali Editor Konfigurasi.

  3. Di Editor Konfigurasi, untuk Bagian, perluas system.applicationHost, lalu pilih situs.

  4. Klik (Koleksi), lalu klik elipsis.

  5. Pilih situs yang ingin Anda konfigurasi, lalu perluas logFile.

  6. Untuk flushByEntryCountW3Clog, masukkan jumlah peristiwa yang akan disimpan di buffer sebelum dihapus ke file log.

  7. Di panel Tindakan , klik Terapkan.

    Cuplikan layar Jendela Editor Koleksi. Flush Menurut Jumlah Entri W 3 C Log disorot di bidang Properti.

Cara mengonfigurasi panjang baris log maksimum

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , perluas server, lalu klik dua kali Editor Konfigurasi.

  3. Di Editor Konfigurasi, untuk Bagian, perluas system.applicationHost, lalu pilih situs.

  4. Klik (Koleksi), lalu klik elipsis.

  5. Pilih situs yang ingin Anda konfigurasi, lalu perluas logFile.

  6. Untuk maxLogLineLength, masukkan jumlah maksimum byte dalam satu baris file log.

  7. Di panel Tindakan , klik Terapkan.

    Cuplikan layar jendela Editor Koleksi. Panjang Garis Log Maks disorot di bidang Properti.

Konfigurasi

Atribut

Atribut Deskripsi
customLogPluginClsid Atribut string opsional.

Menentukan ID kelas objek COM (CLSID) atau ID, dalam urutan prioritas, untuk modul kustom.
directory Atribut string opsional.

Menentukan direktori pengelogan, tempat file log dan file dukungan terkait pengelogan disimpan.

Nilai defaultnya adalah %SystemDrive%\inetpub\logs\LogFiles.
enabled Atribut Boolean opsional.

Menentukan apakah pengelogan diaktifkan (benar) atau dinonaktifkan (salah) untuk situs.

Catatan: Kesalahan ASP dan ODBC tidak dicatat dalam file log IIS.

Nilai defaultnya adalah true.
flushByEntryCountW3CLog Atribut uint opsional.

Menentukan jumlah peristiwa yang akan disimpan dalam buffer sebelum dibersihkan ke file log. Angka yang lebih rendah akan menyebabkan peristiwa dibersihkan lebih cepat, dengan biaya performa sebagai akibat dari jumlah operasi disk yang lebih besar. Kurangi nilai ini untuk pemecahan masalah yang lebih real-time, tingkatkan untuk performa. Nilai 0 menentukan bahwa flush akan terjadi pada maksimum default 64k.

Nilai defaultnya adalah 0.
localTimeRollover Atribut Boolean opsional.

Menentukan apakah file log baru dibuat berdasarkan waktu lokal atau Waktu Universal Terkoordinasi (UTC), yang sebelumnya disebut Greenwich Mean Time (GMT). Ketika false, file log baru dibuat berdasarkan UTC.

Catatan: Terlepas dari pengaturannya, stempel waktu untuk setiap catatan log Pengelogan Diperpanjang W3C berbasis UTC.

Nilai defaultnya adalah false.
logExtFileFlags Atribut bendera opsional.

Menentukan kategori informasi yang ditulis ke file log (saat Anda menggunakan format file log W3C Extended) atau ke sumber data ODBC selama peristiwa pengelogan untuk situs. Atribut logExtFileFlags dapat berupa satu atau beberapa nilai berikut. Jika Anda menentukan lebih dari satu nilai, pisahkan dengan koma (,).

Nilai defaultnya adalah Date, , Time, UserNameClientIP, ServerIP, , UriStemMethod, UriQuery, TimeTaken, HttpStatus, Win32Status, ServerPort, UserAgent, HttpSubStatus, Referer.
Nilai Deskripsi
BytesRecv Catat jumlah byte yang diterima server.
BytesSent Catat jumlah byte yang dikirim server.
ClientIP Catat alamat IP klien yang membuat permintaan.
ComputerName Catat nama server tempat entri file log dibuat.
Cookie Catat konten cookie yang diterima, jika ada konten.
Date Catat tanggal terjadinya aktivitas.
Host Catat nama header host, jika ada.
HttpStatus Catat kode status HTTP.
HttpSubStatus Catat kode sub-status kesalahan HTTP. Misalnya, untuk kesalahan HTTP 500.18, kode status adalah 500 dan kode sub-status adalah 18.
Method Catat tindakan yang diminta. Misalnya, GET, POST, dll.
ProtocolVersion Catat versi protokol yang digunakan klien.
Referer Catat situs yang terakhir dikunjungi pengguna. Situs ini menyediakan tautan ke situs saat ini.
ServerIP Catat alamat IP server tempat entri file log dibuat.
ServerPort Catat nomor port server yang dikonfigurasi untuk situs.
SiteName Catat nama layanan Internet dan nomor instans untuk situs tersebut.
Time Catat waktu dalam Waktu Universal Terkoordinasi (UTC), tempat aktivitas terjadi.
TimeTaken Catat lamanya waktu yang dibutuhkan agar permintaan selesai. Waktu yang diambil dicatat dalam milidetik.

Catatan: Tanda waktu permintaan klien diinisialisasi ketika HTTP.sys menerima byte pertama, tetapi sebelum HTTP.sys mulai mengurai permintaan. Tanda waktu permintaan klien dihentikan ketika penyelesaian pengiriman IIS terakhir terjadi. Waktu yang dibutuhkan tidak mencerminkan waktu di seluruh jaringan. Permintaan pertama ke situs menunjukkan waktu yang sedikit lebih lama daripada permintaan serupa lainnya karena HTTP.sys membuka file log yang berisi permintaan pertama.
UriQuery Catat kueri, jika ada, yang coba dilakukan klien. Kueri Pengidentifikasi Sumber Daya Universal (URI) hanya diperlukan untuk halaman dinamis, dan biasanya terdiri dari parameter yang diteruskan ke URL.
UriStem Catat informasi batang Pengidentifikasi Sumber Daya Universal (URI), yang merupakan target tindakan. Misalnya, Default.htm.
UserAgent Catat jenis browser yang digunakan klien.
UserName Catat nama pengguna terautentikasi yang mengakses server Anda. Pengguna anonim ditunjukkan oleh tanda hubung.
Win32Status Catat kode status Windows.
logFormat Atribut enum opsional.

Menentukan format file log. Atribut logFormat bisa menjadi salah satu nilai berikut.

Nilai defaultnya adalah W3C.
Nilai Deskripsi
Custom Gunakan format file log kustom untuk modul pengelogan kustom.

Nilai numerik adalah 3.
IIS Gunakan format file log Microsoft IIS untuk mencatat informasi tentang situs. Format ini ditangani oleh HTTP.sys, dan merupakan format berbasis teks ASCII tetap, yang berarti Anda tidak dapat menyesuaikan bidang yang dicatat. Bidang dipisahkan dengan koma, dan waktu dicatat sebagai waktu setempat. Daftar berikut adalah daftar bidang yang dicatat saat Anda menggunakan format file log IIS:
  • Alamat IP klien
  • Nama pengguna
  • Tanggal
  • Waktu
  • Layanan dan instans
  • Nama server
  • Alamat IP server
  • Waktu yang dibutuhkan
  • Byte klien dikirim
  • Byte server dikirim
  • Kode status layanan (Nilai 200 menunjukkan bahwa permintaan berhasil dipenuhi.)
  • Kode status Windows (Nilai 0 menunjukkan bahwa permintaan berhasil dipenuhi.)
  • Jenis permintaan
  • Target operasi
  • Parameter (parameter yang diteruskan ke skrip)
Tidak semua bidang akan berisi data. Saat bidang tidak berisi data, tanda hubung (-) muncul sebagai tempat penampung. Saat bidang berisi karakter yang tidak dapat dicetak, HTTP.sys menggantinya dengan tanda plus (+) untuk mempertahankan format file log.

Nilai numerik adalah 0.
NCSA Gunakan format file log umum National Center for Supercomputing Applications (NCSA) untuk mencatat informasi tentang situs. Format ini ditangani oleh HTTP.sys, dan merupakan format berbasis teks ASCII tetap, yang berarti Anda tidak dapat menyesuaikan bidang yang dicatat. Bidang dipisahkan oleh spasi, dan waktu dicatat sebagai waktu lokal dengan offset Waktu Universal Terkoordinasi (UTC). Daftar berikut adalah daftar bidang yang dicatat saat Anda menggunakan format file log Umum NCSA:
  • Alamat host jarak jauh
  • Nama log jarak jauh (Nilai ini selalu merupakan tanda hubung.)
  • Nama pengguna
  • Offset tanggal, waktu, dan UTC
  • Versi permintaan dan protokol
  • Kode status layanan (Nilai 200 menunjukkan bahwa permintaan berhasil dipenuhi.)
  • Byte dikirim
Tidak semua bidang akan berisi data. Saat bidang tidak berisi data, tanda hubung (-) muncul sebagai tempat penampung. Saat bidang berisi karakter yang tidak dapat dicetak, HTTP.sys menggantinya dengan tanda plus (+) untuk mempertahankan format file log.

Nilai numerik adalah 1.
W3C Gunakan format file log W3C Extended untuk mencatat informasi tentang situs. Format ini ditangani oleh HTTP.sys, dan merupakan format berbasis teks ASCII yang dapat disesuaikan, yang berarti Anda menentukan bidang yang dicatat. Tentukan bidang yang dicatat di atribut logExtFileFlags . Bidang dipisahkan oleh spasi, dan waktu direkam dalam Waktu Universal Terkoordinasi (UTC).

Nilai numerik adalah 2.
logSiteId Atribut Boolean opsional.

Menentukan bahwa bidang s-sitename akan berisi nama situs (false) atau ID situs (benar). Jika Satu file log per properti diatur ke Site (default di luar kotak], maka Anda tidak akan mendapatkan kolom s-sitename dalam file log secara default, karena properti nama file log akan berisi ID situs sebagai gantinya. Jika Satu file log per properti diatur ke Server, kolom-s-sitename akan disertakan dalam file log secara default.

Nilai defaultnya adalah True, yang berarti bahwa bidang s-sitename berisi ID situs. Untuk mencatat nama situs sebagai gantinya, atur logSiteID ke False.
logTargetW3C Atribut Bendera Opsional.

Menentukan apakah IIS akan menggunakan Pelacakan Peristiwa untuk Windows (ETW) dan/atau pengelogan file untuk memproses peristiwa IIS yang dicatat. ETW menyediakan pengelogan real time dan penggunaan penyedia ETW dan mekanisme kueri standar. Pengelogan file menyimpan data peristiwa dalam file teks yang dapat Anda uraikan untuk mengakses data pengelogan.

Ketika IIS menggunakan file log, HTTP.sys mencatat data langsung ke file log teks setelah transaksi selesai. Saat menggunakan ETW, HTTP.sys mengirim data ke ETW menggunakan penyedia iislogging, dan layanan LOGSVC mengelola data log, termasuk mengkueri ETW untuk data, mengumpulkan data langsung dari proses pekerja, dan mengirim data ke file log.

Atribut logTargetW3C dapat memiliki nilai yang mungkin berikut. Nilai defaultnya adalah File. Jika dan FileETW dicantumkan untuk logTargetW3C situs di applicationHost.config, yang setara dengan memilih File log dan peristiwa ETW untuk pengaturan file log situs di panel Pengelogan di Manajer IIS.
Nilai Deskripsi
File Data peristiwa IIS akan disimpan dalam file log teks. Untuk memproses data peristiwa, Anda harus mengurai file log berbasis teks. File log teks membutuhkan waktu untuk diproses dan dibersihkan, sehingga Anda tidak akan dapat memproses data peristiwa secara real time.

Nilai numerik adalah 1.
ETW Alih-alih mencatat data langsung ke file teks, IIS akan mengirim informasi yang dicatat ke Pelacakan Peristiwa untuk Windows, mekanisme peristiwa generik yang disertakan dalam Windows. Anda dapat mengelola data yang dicatat menggunakan alat kueri standar, seperti Penganalisis Pesan, atau alat kustom. ETW memproses informasi yang dicatat secara real time, dan memberi Anda kemampuan untuk memfilter dan melihat data, dan untuk mengaktifkan atau menonaktifkan pengelogan, secara dinamis. ETW juga menambahkan informasi terperinci ke data peristiwa, menyediakan data yang tidak dapat diakses HTTP.sys. Untuk informasi selengkapnya, lihat Pelacakan Peristiwa.

Nilai numerik adalah 2.
maxLogLineLength Atribut uint opsional.

Menentukan panjang maksimum baris dalam file log. Ini memungkinkan Anda membatasi jumlah data yang terakumulasi dengan pengelogan, dan menghemat ruang disk, terutama ketika Anda menambahkan bidang pengelogan kustom.

Rentangnya adalah 2 hingga 65.536. Nilai defaultnya adalah 65536.
period Atribut enum opsional.

Menentukan seberapa sering IIS membuat file log baru. Atribut periode dapat menjadi salah satu dari kemungkinan nilai berikut.

Nilai defaultnya adalah Daily.
Nilai Deskripsi
Daily Buat file log baru setiap hari.

Nilai numerik adalah 1.
Hourly Buat file log baru per jam.

Nilai numerik adalah 4.
MaxSize Buat file log baru saat ukuran maksimum tercapai. Ukuran maksimum ditentukan dalam atribut truncateSize.

Nilai numerik adalah 0.
Monthly Buat file log baru setiap bulan.

Nilai numerik adalah 3.
Weekly Buat file log baru setiap minggu.

Nilai numerik adalah 2.
truncateSize Atribut int64 opsional.

Menentukan ukuran maksimum file log (dalam byte) setelah itu untuk membuat file log baru. Nilai ini hanya berlaku ketika MaxSize dipilih untuk atribut periode. Ukuran file minimum adalah 1.048.576 byte. Jika atribut ini diatur ke nilai kurang dari 1.048.576 byte, nilai default secara implisit diasumsikan sebagai 1.048.576 byte.

Nilai defaultnya adalah 20971520.

Elemen Anak

Elemen Deskripsi
customFields Elemen opsional.

Menentukan pengaturan konfigurasi untuk kumpulan bidang kustom dalam log W3C.

Sampel Konfigurasi

Contoh konfigurasi berikut menggunakan atribut logExtFileFlags dari <logFile> elemen untuk menentukan pengaturan yang dicatat IIS untuk situs Web bernama Contoso. Atribut periode menyebabkan IIS membuat file log W3C baru setiap jam; atribut localTimeRollover menentukan bahwa IIS menggunakan waktu di server lokal untuk menentukan kapan harus membuat dan memberi nama file log baru.

<site name="Contoso" id="2" serverAutoStart="true">
   <application path="/" applicationPool="Contoso">
      <virtualDirectory path="/" physicalPath="C:\Contoso\Content" />
   </application>
   <bindings>
      <binding protocol="http" bindingInformation="*:80:www.contoso.com" />
   </bindings>
   <logFile
      period="Hourly"
      localTimeRollover="true"
      logExtFileFlags="Date, Time, ClientIP, UserName, ServerIP, Method, UriStem, UriQuery, HttpStatus, TimeTaken, ServerPort, UserAgent, HttpSubStatus" />
</site>

Kode Sampel

Contoh berikut mengonfigurasi pengelogan untuk situs bernama Contoso. Setiap contoh memungkinkan pengelogan untuk situs dan mengonfigurasi pengelogan situs untuk menghasilkan file log baru setiap hari. Mereka juga mengonfigurasi IIS untuk menggunakan waktu di server lokal untuk menghasilkan nama file log dan menentukan kapan harus menghasilkan file log baru.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.logFormat:"W3C" 
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.period:"Daily" 
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.localTimeRollover:"True" 
appcmd.exe set config -section:system.applicationHost/sites /[name='Contoso'].logFile.enabled:"True" /commit:apphost

Catatan

Anda harus memastikan untuk mengatur parameter penerapan ke apphost saat Anda menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai dalam file ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();

         ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Contoso");
         if (siteElement == null) throw new InvalidOperationException("Element not found!");

         ConfigurationElement logFileElement = siteElement.GetChildElement("logFile");
         logFileElement["logFormat"] = @"W3C";
         logFileElement["period"] = @"Daily";
         logFileElement["localTimeRollover"] = true;
         logFileElement["enabled"] = true;

         serverManager.CommitChanges();
      }
   }

   private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
   {
      foreach (ConfigurationElement element in collection)
      {
         if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
         {
            bool matches = true;
            for (int i = 0; i < keyValues.Length; i += 2)
            {
               object o = element.GetAttributeValue(keyValues[i]);
               string value = null;
               if (o != null)
               {
                  value = o.ToString();
               }
               if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
               {
                  matches = false;
                  break;
               }
            }
            if (matches)
            {
               return element;
            }
         }
      }
      return null;
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
       Dim serverManager As ServerManager = New ServerManager
       Dim config As Configuration = serverManager.GetApplicationHostConfiguration
       Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
       Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
       Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "Contoso")

       If (siteElement Is Nothing) Then
          Throw New InvalidOperationException("Element not found!")
       End If

       Dim logFileElement As ConfigurationElement = siteElement.GetChildElement("logFile")
       logFileElement("logFormat") = "W3C"
       logFileElement("period") = "Daily"
       logFileElement("localTimeRollover") = True
       logFileElement("enabled") = True

       serverManager.CommitChanges()
   End Sub

   Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
      For Each element As ConfigurationElement In collection
         If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
            Dim matches As Boolean = True
            Dim i As Integer
            For i = 0 To keyValues.Length - 1 Step 2
               Dim o As Object = element.GetAttributeValue(keyValues(i))
               Dim value As String = Nothing
               If (Not (o) Is Nothing) Then
                  value = o.ToString
               End If
               If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
                  matches = False
                  Exit For
               End If
            Next
            If matches Then
               Return element
            End If
         End If
      Next
      Return Nothing
   End Function


End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;

var siteElementPos = FindElement(sitesCollection, "site", ["name", "Contoso"]);
if (siteElementPos == -1) throw "Element not found!";

var siteElement = sitesCollection.Item(siteElementPos);
var logFileElement = siteElement.ChildElements.Item("logFile");
logFileElement.Properties.Item("logFormat").Value = "W3C";
logFileElement.Properties.Item("period").Value = "Daily";
logFileElement.Properties.Item("localTimeRollover").Value = true;
logFileElement.Properties.Item("enabled").Value = true;

adminManager.CommitChanges();

function FindElement(collection, elementTagName, valuesToMatch) {
   for (var i = 0; i < collection.Count; i++) {
      var element = collection.Item(i);
      if (element.Name == elementTagName) {
         var matches = true;
         for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
            var property = element.GetPropertyByName(valuesToMatch[iVal]);
            var value = property.Value;
            if (value != null) {
               value = value.toString();
            }
            if (value != valuesToMatch[iVal + 1]) {
               matches = false;
               break;
            }
         }
         if (matches) {
            return i;
         }
      }
   }
   return -1;
}

Vbscript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "Contoso"))

If siteElementPos = -1 Then
   WScript.Echo "Element not found!"
   WScript.Quit
End If

Set siteElement = sitesCollection.Item(siteElementPos)
Set logFileElement = siteElement.ChildElements.Item("logFile")
logFileElement.Properties.Item("logFormat").Value = "W3C"
logFileElement.Properties.Item("period").Value = "Daily"
logFileElement.Properties.Item("localTimeRollover").Value = True
logFileElement.Properties.Item("enabled").Value = True

adminManager.CommitChanges()

Function FindElement(collection, elementTagName, valuesToMatch)
   For i = 0 To CInt(collection.Count) - 1
      Set element = collection.Item(i)
      If element.Name = elementTagName Then
         matches = True
         For iVal = 0 To UBound(valuesToMatch) Step 2
            Set property = element.GetPropertyByName(valuesToMatch(iVal))
            value = property.Value
            If Not IsNull(value) Then
               value = CStr(value)
            End If
            If Not value = CStr(valuesToMatch(iVal + 1)) Then
               matches = False
               Exit For
            End If
         Next
         If matches Then
            Exit For
         End If
      End If
   Next
   If matches Then
      FindElement = i
   Else
      FindElement = -1
   End If
End Function