Pengelogan <ODBC odbcLogging>
Gambaran Umum
Elemen mengonfigurasi <odbcLogging>
pengelogan Open Database Connectivity (ODBC) untuk Internet Information Services (IIS) 7. Pengelogan ODBC merekam semua aktivitas HTTP ke database yang ditentukan pengguna alih-alih ke file teks.
Pengelogan ODBC diimplementasikan sebagai modul pengelogan kustom di IIS 7, oleh karena itu mengaktifkan dan mengonfigurasi pengelogan ODBC di IIS 7 terdiri dari dua tindakan terpisah:
Mengatur atribut pengelogan ODBC dalam
<odbcLogging>
elemen . Secara khusus, atribut berikut harus dikonfigurasi:- Atribut dataSource harus menentukan Nama Sumber Data Sistem (DSN) untuk database tempat tabel yang ditentukan oleh atribut tableName berada.
- Atribut kata sandi harus menentukan kata sandi database yang akan digunakan IIS 7 saat menulis informasi log ke database.
- Atribut tableName harus menentukan nama tabel database dalam database yang ditentukan oleh atribut dataSource .
- Atribut userName harus menentukan nama pengguna database yang akan digunakan IIS 7 saat menulis informasi log ke database.
Mengatur atribut pengelogan kustom yang <benar di elemen logFile> . Secara khusus, atribut berikut harus dikonfigurasi:
- Atribut logFormat harus diatur ke "Kustom."
- Atribut customLogPluginClsid harus diatur ke "{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
Secara default, IIS 7 mencatat semua aktivitas ke file teks yang menggunakan format file log yang diperluas W3C, dan secara default Anda dapat mengonfigurasi IIS untuk menggunakan format file teks lainnya seperti format NCSA atau IIS asli. Kerugian utama menggunakan format berbasis teks ini adalah bahwa mereka lebih sulit untuk mengurai aktivitas, dan umumnya memerlukan utilitas seperti LogParser Microsoft untuk mengambil informasi yang berguna dari log Anda. Selain itu, performa penguraian data dengan file teks juga biasanya jauh lebih lambat daripada menggunakan database. Namun, pengelogan berbasis teks dilakukan dalam mode kernel, yang meningkatkan performa untuk permintaan pengelogan.
Saat Anda menggunakan pengelogan ODBC, aktivitas server Anda disimpan dalam database, yang akan sangat meningkatkan pengambilan data. Ini memperluas kemungkinan untuk menggunakan berbagai klien database saat penggalian data aktivitas server Anda. Kerugian utama untuk menggunakan pengelogan ODBC adalah performa untuk pengelogan karena ketika pengelogan ODBC diaktifkan, IIS menonaktifkan cache mode kernel. Untuk alasan ini, menerapkan pengelogan ODBC dapat menurunkan performa server secara keseluruhan.
Catatan
Untuk membuat tabel untuk pengelogan ODBC, Anda dapat menggunakan file "%windir%\System32\inetsrv\logtemp.sql" yang disediakan dengan IIS 7. Untuk informasi selengkapnya tentang pengelogan ODBC, lihat Artikel Pangkalan Pengetahuan Microsoft 245243.
Kompatibilitas
Versi | Catatan |
---|---|
IIS 10.0 | Elemen <odbcLogging> tidak dimodifikasi di IIS 10.0. |
IIS 8.5 | Elemen <odbcLogging> tidak dimodifikasi di IIS 8.5. |
IIS 8.0 | Elemen <odbcLogging> tidak dimodifikasi di IIS 8.0. |
IIS 7.5 | Elemen <odbcLogging> tidak dimodifikasi dalam IIS 7.5. |
IIS 7.0 | Elemen <odbcLogging> ini diperkenalkan di IIS 7.0. |
IIS 6.0 | Atribut <odbcLogging> elemen menggantikan properti metabase IIS 6.0 berikut:
|
Siapkan
Elemen <odbcLogging>
tidak tersedia pada penginstalan default IIS 7 dan yang lebih baru. Untuk menginstalnya, gunakan langkah-langkah berikut.
Windows Server 2012 atau Windows Server 2012 R2
- Pada taskbar, klik Manajer Server.
- Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
- Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
- Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Kesehatan dan Diagnostik, lalu pilih Pengelogan ODBC. Klik Berikutnya.
. - Pada halaman Pilih fitur, klik Berikutnya.
- Pada halaman Konfirmasi pilihan instalasi, klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows 8 atau Windows 8.1
- Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
- Perluas Layanan Informasi Internet, perluas World Wide Web Services, perluas Kesehatan dan Diagnostik, lalu pilih Pengelogan ODBC.
- Klik OK.
- Klik Tutup.
Windows Server 2008 atau Windows Server 2008 R2
- Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
- Di panel hierarki Manajer Server , perluas Peran, lalu klik Server Web (IIS).
- Di panel Server Web (IIS), gulir ke bagian Layanan Peran , lalu klik Tambahkan Layanan Peran.
- Pada halaman Pilih Layanan Peran dari Wizard Tambahkan Layanan Peran, pilih Pengelogan ODBC, lalu klik Berikutnya.
- Pada halaman Konfirmasi Pilihan Penginstalan , klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows Vista atau Windows 7
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
- Perluas Layanan Informasi Internet, lalu pilih Pengelogan ODBC, lalu klik OK.
Bagaimana Caranya
Tidak ada antarmuka pengguna untuk mengonfigurasi pengelogan ODBC untuk IIS 7. Untuk contoh cara mengonfigurasi pengelogan ODBC secara terprogram, lihat bagian Sampel Kode dari dokumen ini.
Konfigurasi
Atribut
Atribut | Deskripsi |
---|---|
dataSource |
Atribut string opsional. Menentukan Nama Sumber Data Sistem (DSN) untuk database tempat log ditulis. Nilai defaultnya adalah InternetDb . |
password |
Atribut string opsional. Menentukan kata sandi database ODBC yang Anda gunakan saat menulis informasi ke database selama pengelogan peristiwa. Secara default, nilai ini dienkripsi. Nilai defaultnya adalah [enc:AesProvider::enc] . |
tableName |
Atribut string opsional. Menentukan nama tabel database ODBC tempat Windows menulis informasi selama pengelogan peristiwa. Nilai defaultnya adalah InternetLog . |
userName |
Atribut string opsional. Menentukan nama pengguna database ODBC yang digunakan untuk menulis informasi ke database selama pengelogan peristiwa. Nilai defaultnya adalah InternetAdmin . |
Elemen Anak
Tidak ada.
Sampel Konfigurasi
Sampel konfigurasi pertama untuk Situs Web Default ini mengonfigurasi atribut dalam <odbcLogging>
elemen yang menentukan sistem DSN, nama tabel, nama pengguna, dan kata sandi untuk koneksi pengelogan ODBC.
<location path="Default Web Site">
<system.webServer>
<odbcLogging dataSource="InternetDb"
tableName="InternetLog"
userName="InternetAdmin"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]" />
</system.webServer>
</location>
Sampel konfigurasi kedua ini mengonfigurasi atribut pengelogan kustom yang benar dalam <elemen logFile> yang memungkinkan pengelogan ODBC untuk Situs Web Default.
<site name="Default Web Site" id="1" serverAutoStart="true">
<application path="/" applicationPool="DefaultAppPool">
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
</bindings>
<logFile logFormat="Custom"
customLogPluginClsid="{FF16065B-DE82-11CF-BC0A-00AA006111E0}" />
</site>
Kode Sampel
Sampel kode berikut mengonfigurasi dua set opsi untuk Situs Web Default:
- Paruh pertama dari setiap sampel mengonfigurasi atribut dalam
<odbcLogging>
elemen yang menentukan sistem DSN, nama tabel, nama pengguna, dan kata sandi untuk koneksi pengelogan ODBC. - Paruh kedua dari setiap sampel menentukan atribut pengelogan kustom dalam <elemen logFile> yang mengaktifkan pengelogan ODBC.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/odbcLogging /dataSource:"InternetDb" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/odbcLogging /tableName:"InternetLog" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/odbcLogging /userName:"InternetAdmin" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/odbcLogging /password:"P@ssw0rd" /commit:apphost
appcmd.exe set sites "Default Web Site" -logFile.logFormat:"Custom" /commit:apphost
appcmd.exe set sites "Default Web Site" -logFile.customLogPluginClsid:"{FF16065B-DE82-11CF-BC0A-00AA006111E0}" /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 odbcLoggingSection = config.GetSection("system.webServer/odbcLogging", "Default Web Site");
odbcLoggingSection["dataSource"] = @"InternetDb";
odbcLoggingSection["tableName"] = @"InternetLog";
odbcLoggingSection["userName"] = @"InternetAdmin";
odbcLoggingSection["password"] = @"P@ssw0rd";
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Default Web Site");
if (siteElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElement logFileElement = siteElement.GetChildElement("logFile");
logFileElement["customLogPluginClsid"] = @"{FF16065B-DE82-11CF-BC0A-00AA006111E0}";
logFileElement["logFormat"] = @"Custom";
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 odbcLoggingSection As ConfigurationSection = config.GetSection("system.webServer/odbcLogging", "Default Web Site")
odbcLoggingSection("dataSource") = "InternetDb"
odbcLoggingSection("tableName") = "InternetLog"
odbcLoggingSection("userName") = "InternetAdmin"
odbcLoggingSection("password") = "P@ssw0rd"
Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "Default Web Site")
If (siteElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim logFileElement As ConfigurationElement = siteElement.GetChildElement("logFile")
logFileElement("customLogPluginClsid") = "{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
logFileElement("logFormat") = "Custom"
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 odbcLoggingSection = adminManager.GetAdminSection("system.webServer/odbcLogging", "MACHINE/WEBROOT/APPHOST/Default Web Site");
odbcLoggingSection.Properties.Item("dataSource").Value = "InternetDb";
odbcLoggingSection.Properties.Item("tableName").Value = "InternetLog";
odbcLoggingSection.Properties.Item("userName").Value = "InternetAdmin";
odbcLoggingSection.Properties.Item("password").Value = "P@ssw0rd";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "Default Web Site"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);
var logFileElement = siteElement.ChildElements.Item("logFile");
logFileElement.Properties.Item("customLogPluginClsid").Value = "{FF16065B-DE82-11CF-BC0A-00AA006111E0}";
logFileElement.Properties.Item("logFormat").Value = "Custom";
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 = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set odbcLoggingSection = adminManager.GetAdminSection("system.webServer/odbcLogging", "MACHINE/WEBROOT/APPHOST/Default Web Site")
odbcLoggingSection.Properties.Item("dataSource").Value = "InternetDb"
odbcLoggingSection.Properties.Item("tableName").Value = "InternetLog"
odbcLoggingSection.Properties.Item("userName").Value = "InternetAdmin"
odbcLoggingSection.Properties.Item("password").Value = "P@ssw0rd"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "Default Web Site"))
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("customLogPluginClsid").Value = "{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
logFileElement.Properties.Item("logFormat").Value = "Custom"
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