Bagikan melalui


Melacak operasi driver

Unduh driver JDBC

Microsoft JDBC Driver for SQL Server mendukung penggunaan pelacakan (atau pengelogan) untuk membantu menyelesaikan masalah dan masalah dengan driver JDBC saat digunakan dalam aplikasi Anda. Untuk mengaktifkan penggunaan pelacakan, driver JDBC menggunakan API pengelogan di java.util.logging, yang menyediakan serangkaian kelas untuk membuat objek Logger dan LogRecord.

Catatan

Untuk komponen asli (sqljdbc_xa.dll) yang disertakan dengan driver JDBC, pelacakan diaktifkan oleh kerangka kerja Diagnostik Bawaan (BID). Untuk informasi tentang BID, lihat Pelacakan Akses Data di SQL Server.

Saat mengembangkan aplikasi, Anda dapat melakukan panggilan ke objek Logger, yang pada gilirannya membuat objek LogRecord, yang kemudian diteruskan ke objek Handler untuk diproses. Objek Pencatat dan Handler menggunakan tingkat pengelogan, dan filter pengelogan opsional, untuk mengatur LogRecords mana yang diproses. Ketika operasi pengelogan selesai, objek Handler dapat secara opsional menggunakan objek Formatter untuk menerbitkan informasi log.

Secara default, kerangka kerja java.util.logging menulis outputnya ke file. File log output ini harus memiliki izin tulis untuk konteks tempat driver JDBC berjalan.

Catatan

Untuk informasi selengkapnya tentang menggunakan berbagai objek pengelogan untuk pelacakan program, lihat dokumentasi API Pencatatan Java di situs Web Sun Microsystems.

Bagian berikut menjelaskan tingkat pengelogan dan kategori yang dapat dicatat, dan memberikan informasi tentang cara mengaktifkan pelacakan di aplikasi Anda.

Tingkat Pengelogan

Setiap pesan log yang dibuat memiliki tingkat pengelogan terkait. Tingkat pengelogan menentukan pentingnya pesan log, yang ditentukan oleh kelas Level di java.util.logging. Mengaktifkan pengelogan pada satu tingkat juga memungkinkan pengelogan di semua tingkat yang lebih tinggi. Bagian ini menjelaskan tingkat pengelogan untuk kategori pengelogan publik dan kategori pengelogan internal. Untuk informasi selengkapnya tentang kategori pengelogan, lihat bagian Kategori Pengelogan di artikel ini.

Tabel berikut ini menjelaskan setiap tingkat pengelogan yang tersedia untuk kategori pengelogan publik.

Nama Deskripsi
PARAH Menunjukkan kegagalan serius dan merupakan tingkat pengelogan tertinggi. Dalam driver JDBC, tingkat ini digunakan untuk melaporkan kesalahan dan pengecualian.
PERINGATAN Menunjukkan potensi masalah.
INFO Menyediakan pesan informasi.
KONFIGURASI Menyediakan pesan konfigurasi. Driver JDBC saat ini tidak menyediakan pesan konfigurasi apa pun.
BAIK Menyediakan informasi pelacakan dasar termasuk semua pengecualian yang dilemparkan oleh metode publik.
LEBIH BAIK Menyediakan informasi pelacakan terperinci termasuk semua entri metode publik dan titik keluar dengan jenis data parameter terkait, dan semua properti publik untuk kelas publik. Selain itu, parameter input, parameter output, dan nilai pengembalian metode kecuali CLOB, BLOB, NCLOB, Pembaca, <jenis nilai pengembalian aliran> .
TERBAIK Menyediakan informasi pelacakan yang sangat rinci. Pengaturan ini adalah tingkat pengelogan terendah.
TIDAK AKTIF Menonaktifkan pengelogan.
SEMUA Mengaktifkan pengelogan semua pesan.

Tabel berikut ini menjelaskan setiap tingkat pengelogan yang tersedia untuk kategori pengelogan internal.

Nama Deskripsi
PARAH Menunjukkan kegagalan serius dan merupakan tingkat pengelogan tertinggi. Dalam driver JDBC, tingkat ini digunakan untuk melaporkan kesalahan dan pengecualian.
PERINGATAN Menunjukkan potensi masalah.
INFO Menyediakan pesan informasi.
BAIK Menyediakan informasi pelacakan termasuk pembuatan dan penghancuran objek dasar. Selain itu, semua pengecualian yang dilemparkan oleh metode publik.
LEBIH BAIK Menyediakan informasi pelacakan terperinci termasuk semua entri metode publik dan titik keluar dengan jenis data parameter terkait, dan semua properti publik untuk kelas publik. Selain itu, parameter input, parameter output, dan nilai pengembalian metode kecuali CLOB, BLOB, NCLOB, Pembaca, <jenis nilai pengembalian aliran> .

Kategori pengelogan berikut ada di driver JDBC versi 1.2 dan memiliki tingkat pengelogan FINE: SQLServer Koneksi ion, SQLServerStatement, XA, dan SQLServerDataSource. Mulai rilis versi 2.0, kategori ini ditingkatkan ke tingkat FINER.
TERBAIK Menyediakan informasi pelacakan yang sangat rinci. Pengaturan ini adalah tingkat pengelogan terendah.

Kategori pengelogan berikut ada di driver JDBC versi 1.2 dan memiliki tingkat pengelogan FINEST: TDS. DATA dan TDS. TOKEN. Mulai rilis versi 2.0, mereka mempertahankan tingkat pengelogan FINEST.
TIDAK AKTIF Menonaktifkan pengelogan.
SEMUA Mengaktifkan pengelogan semua pesan.

Kategori Pengelogan

Saat membuat objek Pencatat, Anda harus memberi tahu objek, entitas atau kategori bernama mana yang Anda minati untuk mendapatkan informasi log. Driver JDBC mendukung kategori pengelogan publik berikut, yang semuanya ditentukan dalam paket driver com.microsoft.sqlserver.jdbc.

Nama Deskripsi
Connection Mencatat pesan di kelas SQLServer Koneksi ion. Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
Pernyataan Mencatat pesan di kelas SQLServerStatement . Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
DataSource Mencatat pesan di kelas SQLServerDataSource . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
ResultSet Mencatat pesan di kelas SQLServerResultSet . Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
Driver Mencatat pesan di kelas SQLServerDriver . Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
Ketahanan Mencatat pesan di kelas SQLServer Koneksi ion yang hanya berkaitan dengan koneksi menganggur ketahanan koneksi tersambung kembali. Aplikasi dapat mengatur tingkat pengelogan sebagai FINE dan FINER.
Pengalihan Mencatat pesan di kelas SQLServer Koneksi ion yang hanya berkaitan dengan percobaan ulang terbuka koneksi. Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.

Dimulai dengan Driver Microsoft JDBC versi 2.0, driver juga menyediakan paket com.microsoft.sqlserver.jdbc.internals, yang mencakup dukungan pengelogan untuk kategori pengelogan internal berikut.

Nama Deskripsi
AuthenticationJNI Mencatat pesan tentang masalah autentikasi terintegrasi Windows (ketika properti koneksi authenticationScheme secara implisit atau secara eksplisit diatur ke NativeAuthentication).

Aplikasi dapat mengatur tingkat pengelogan sebagai FINEST dan FINE.
SQLServer Koneksi ion Mencatat pesan di kelas SQLServer Koneksi ion. Aplikasi dapat mengatur tingkat pengelogan sebagai FINE dan FINER.
SQLServerDataSource Mencatat pesan di kelas SQLServerDataSource, SQLServer Koneksi ionPoolDataSource, dan SQLServerPooled Koneksi ion.

Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
InputStream Mencatat pesan tentang jenis data berikut: java.io.InputStream, java.io.Reader dan jenis data, yang memiliki penentu maksimum seperti jenis data varchar, nvarchar, dan varbinary.

Aplikasi dapat mengatur tingkat pengelogan sebagai FINER.
SQLServerException Mencatat pesan di kelas SQLServerException . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerResultSet Mencatat pesan di kelas SQLServerResultSet . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE, FINER, dan FINEST.
SQLServerStatement Mencatat pesan di kelas SQLServerStatement . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE, FINER, dan FINEST.
XA Mencatat pesan untuk semua transaksi XA di kelas SQLServerXADataSource . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE dan FINER.
KerbAuthentication Mencatat pesan tentang autentikasi Kerberos tipe 4 (saat properti koneksi authenticationScheme diatur ke JavaKerberos). Aplikasi dapat mengatur tingkat pengelogan sebagai FINE atau FINER.
TDS. DATA Mencatat pesan yang berisi percakapan tingkat protokol TDS antara driver dan SQL Server. Konten terperinci dari setiap paket TDS yang dikirim dan diterima dicatat dalam ASCII dan heksadesimal. Kredensial masuk (nama pengguna dan kata sandi) tidak dicatat. Semua data lainnya dicatat.

Kategori ini membuat pesan yang sangat verbose dan terperinci, dan hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINEST.
TDS. Channel Kategori ini melacak tindakan saluran komunikasi TCP dengan SQL Server. Pesan yang dicatat termasuk pembukaan dan penutupan soket serta baca dan tulis. Ini juga melacak pesan yang terkait dengan pembuatan Keamanan Lapisan Transportasi (TLS), yang sebelumnya dikenal sebagai Secure Sockets Layer (SSL), koneksi dengan SQL Server.

Kategori ini hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINE, FINER, atau FINEST.
TDS. Penulis Kategori ini melacak penulisan ke saluran TDS. Hanya panjang penulisan yang dilacak, bukan kontennya. Kategori ini juga melacak masalah ketika sinyal perhatian dikirim ke server untuk membatalkan eksekusi pernyataan.

Kategori ini hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINEST.
TDS. Pembaca Kategori ini melacak operasi baca tertentu dari saluran TDS di tingkat FINEST. Pada tingkat FINEST, pelacakan bisa verbose. Pada tingkat PERINGATAN dan PARAH, kategori ini melacak ketika driver menerima protokol TDS yang tidak valid dari SQL Server sebelum driver menutup koneksi.

Kategori ini hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINER dan FINEST.
TDS. Perintah Kategori ini melacak transisi status tingkat rendah dan informasi lain yang terkait dengan menjalankan perintah TDS, seperti eksekusi pernyataan Transact-SQL, pengambilan kursor ResultSet, penerapan, dan sebagainya.

Kategori ini hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINEST.
TDS. TOKEN Kategori ini hanya mencatat token dalam paket TDS, dan kurang verbose daripada TDS. Kategori DATA. Ini hanya dapat diaktifkan dengan mengatur tingkat pengelogan ke FINEST.

Pada tingkat FINEST, kategori ini melacak token TDS saat diproses dalam respons. Pada tingkat SEVERE, kategori ini melacak ketika token TDS yang tidak valid ditemui.
SQLServerDatabaseMetaData Mencatat pesan di kelas SQLServerDatabaseMetaData . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerResultSetMetaData Mencatat pesan di kelas SQLServerResultSetMetaData . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerParameterMetaData Mencatat pesan di kelas SQLServerParameterMetaData . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerBlob Mencatat pesan di kelas SQLServerBlob . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerClob Mencatat pesan di kelas SQLServerClob . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerSQLXML Mencatat pesan di kelas SQLServerSQLXML internal. Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServerDriver Mencatat pesan di kelas SQLServerDriver . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.
SQLServernClob Mencatat pesan di kelas SQLServerNClob . Aplikasi dapat mengatur tingkat pengelogan sebagai FINE.

Mengaktifkan pelacakan secara terprogram

Pelacakan dapat diaktifkan secara terprogram dengan membuat objek Pencatat dan menunjukkan kategori yang akan dicatat. Misalnya, kode berikut menunjukkan cara mengaktifkan pengelogan untuk pernyataan SQL:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.FINER);

Untuk menonaktifkan pengelogan dalam kode Anda, gunakan kode berikut:

logger.setLevel(Level.OFF);

Untuk mencatat semua kategori yang tersedia, gunakan kode berikut:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
logger.setLevel(Level.FINE);

Untuk menonaktifkan kategori tertentu agar tidak dicatat, gunakan kode berikut:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc.Statement");
logger.setLevel(Level.OFF);

Mengaktifkan pelacakan dengan menggunakan file logging.properties

Anda juga dapat mengaktifkan pelacakan dengan menggunakan logging.properties file, yang dapat ditemukan di lib direktori penginstalan Java Runtime Environment (JRE) 8 Anda atau conf folder untuk Java 9 dan yang lebih tinggi. File ini dapat digunakan untuk mengatur nilai default untuk pencatat dan penangan yang akan digunakan saat pelacakan diaktifkan.

Konfigurasi berikut adalah contoh pengaturan yang dapat Anda buat dalam logging.properties file:

# Specify the handler, the handlers will be installed during VM startup.
handlers= java.util.logging.FileHandler

# Default global logging level.
.level= OFF

# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 5000000
java.util.logging.FileHandler.count = 20
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = FINEST

# Facility specific properties.
com.microsoft.sqlserver.jdbc.level=FINEST

Catatan

Anda dapat mengatur properti dalam logging.properties file dengan menggunakan objek LogManager yang merupakan bagian dari java.util.logging.

Baca juga

Mendiagnosis masalah dengan driver JDBC