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
, UserName
ClientIP
, ServerIP
, Method
, UriStem
, UriQuery
TimeTaken
, 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
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).
Di panel Koneksi , perluas nama server, perluas Situs, lalu klik situs Web tempat Anda ingin mengonfigurasi pengelogan.
Di panel Beranda , klik dua kali Pengelogan.
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.
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.
Cara mengonfigurasi ETW atau pengelogan file untuk log W3C
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).
Di panel Koneksi , perluas nama server, perluas Situs, lalu pilih situs.
Di panel beranda situs, klik dua kali Pengelogan.
Di beranda Pengelogan , untuk Tujuan Peristiwa Log, pilih File log saja, hanya peristiwa ETW, atau File log dan peristiwa ETW.
Cara mengonfigurasi pembersihan log W3C menurut jumlah entri
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).
Di panel Koneksi , perluas server, lalu klik dua kali Editor Konfigurasi.
Di Editor Konfigurasi, untuk Bagian, perluas
system.applicationHost
, lalu pilih situs.Klik (Koleksi), lalu klik elipsis.
Pilih situs yang ingin Anda konfigurasi, lalu perluas logFile.
Untuk flushByEntryCountW3Clog, masukkan jumlah peristiwa yang akan disimpan di buffer sebelum dihapus ke file log.
Di panel Tindakan , klik Terapkan.
Cara mengonfigurasi panjang baris log maksimum
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).
Di panel Koneksi , perluas server, lalu klik dua kali Editor Konfigurasi.
Di Editor Konfigurasi, untuk Bagian, perluas
system.applicationHost
, lalu pilih situs.Klik (Koleksi), lalu klik elipsis.
Pilih situs yang ingin Anda konfigurasi, lalu perluas logFile.
Untuk maxLogLineLength, masukkan jumlah maksimum byte dalam satu baris file log.
Di panel Tindakan , klik Terapkan.
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 , UserName ClientIP , ServerIP , , UriStem Method , UriQuery , TimeTaken , HttpStatus , Win32Status , ServerPort , UserAgent , HttpSubStatus , Referer .
|
||||||||||||||||||||||||||||||||||||||||||||||
logFormat |
Atribut enum opsional. Menentukan format file log. Atribut logFormat bisa menjadi salah satu nilai berikut. Nilai defaultnya adalah W3C .
|
||||||||||||||||||||||||||||||||||||||||||||||
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 File ETW 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.
|
||||||||||||||||||||||||||||||||||||||||||||||
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 .
|
||||||||||||||||||||||||||||||||||||||||||||||
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk