Aracılığıyla paylaş


Sürücü işlemlerini izleme

JDBC sürücüsünü indirin

SQL Server için Microsoft JDBC Sürücüsü, uygulamanızda kullanıldığında JDBC sürücüsüyle ilgili sorunları ve sorunları çözmeye yardımcı olmak için izleme (veya günlüğe kaydetme) kullanımını destekler. İzleme kullanımını etkinleştirmek için JDBC sürücüsü, Logger ve LogRecord nesneleri oluşturmak için bir sınıf kümesi sağlayan java.util.logging dosyasındaki günlük API'lerini kullanır.

Uyarı

JDBC sürücüsüne dahil edilen yerel bileşen (sqljdbc_xa.dll) için izleme, Built-In Tanılama (BID) çerçevesi tarafından etkinleştirilir. BID hakkında bilgi için bkz. SQL Server'da Veri Erişimi İzleme.

Uygulamanızı geliştirirken, Logger nesnelerine çağrılar yapabilirsiniz; bu da logrecord nesneleri oluşturur ve bu nesneler işlenmek üzere İşleyici nesnelerine geçirilir. Kayıt ve İşleyici objeleri, hangi LogRecord'ların işlendiğini kontrol etmek için kayıt seviyelerini ve opsiyonel olarak kayıt filtrelerini kullanır. Günlük işlemleri tamamlandığında, İşleyici nesneleri isteğe bağlı olarak günlük bilgilerini yayımlamak için Formatter nesnelerini kullanabilir.

Varsayılan olarak, java.util.logging çerçevesi çıktısını bir dosyaya yazar. Bu çıkış günlük dosyası, JDBC sürücüsünün çalıştığı bağlam için yazma izinlerine sahip olmalıdır.

Uyarı

Program izleme için çeşitli günlük nesnelerini kullanma hakkında daha fazla bilgi için Sun Microsystems Web sitesindeki Java Günlük API'leri belgelerine bakın.

Aşağıdaki bölümlerde günlüğe kaydetme düzeyleri ve günlüğe kaydedilebilecek kategoriler açıklanır ve uygulamanızda izlemeyi etkinleştirme hakkında bilgi sağlanır.

Günlük düzeyleri

Oluşturulan her günlük iletisinin ilişkili bir günlük düzeyi vardır. Günlük düzeyi, java.util.logging içindeki Level sınıfı tarafından tanımlanan günlük iletisinin önemini belirler. Bir düzeyde günlüğe kaydetmeyi etkinleştirmek, tüm yüksek düzeylerde günlüğe kaydetmeyi de etkinleştirir. Bu bölümde hem genel günlük kategorileri hem de iç günlük kategorileri için günlük düzeyleri açıklanmaktadır. Günlük kategorileri hakkında daha fazla bilgi için bu makaledeki Günlük Kategorileri bölümüne bakın.

Aşağıdaki tabloda, kamuya açık günlük kategorileri için kullanılabilir tüm günlük düzeyleri açıklanmaktadır.

İsim Description
ŞİDDETLİ Ciddi bir hatayı gösterir ve en yüksek günlüğe kaydetme düzeyidir. JDBC sürücüsünde bu düzey hataları ve özel durumları raporlamak için kullanılır.
UYARI Olası bir sorunu gösterir.
BİLGİ Bilgilendiren iletiler sağlar.
Yapılandırma Yapılandırma iletileri sağlar. JDBC sürücüsü şu anda herhangi bir yapılandırma iletisi sağlamaz.
İYİ Genel yöntemlerce fırlatılan tüm istisnalar dahil olmak üzere temel izleme bilgilerini sağlar.
INCE İlişkili parametre veri türleriyle tüm ortak yöntem girişi ve çıkış noktaları ve genel sınıflar için tüm genel özellikler dahil olmak üzere ayrıntılı izleme bilgileri sağlar. Ayrıca giriş parametreleri, çıkış parametreleri ve yöntem CLOB, BLOB, NCLOB, Okuyucu <, akış> dönüş değeri türleri dışında değer döndürür.
EN İYİ Son derece ayrıntılı izleme bilgileri sağlar. Bu ayar en düşük kayıt düzeyidir.
OFF Günlüğe kaydetmeyi kapatır.
HEPSİ Tüm iletilerin günlüğe kaydedilmesini etkinleştirir.

İç günlük kategorileri için kullanılabilir her bir günlük düzeyi, aşağıdaki tabloda açıklanmaktadır.

İsim Description
ŞİDDETLİ Ciddi bir hatayı gösterir ve en yüksek log düzeyidir. JDBC sürücüsünde bu düzey hataları ve özel durumları raporlamak için kullanılır.
UYARI Olası bir sorunu gösterir.
BİLGİ Bilgilendiren iletiler sağlar.
İYİ Temel nesne oluşturma ve yok etme dahil olmak üzere izleme bilgileri sağlar. Ayrıca, genel yöntemler tarafından oluşan tüm özel durumlar.
INCE İlişkili parametre veri türleriyle tüm ortak yöntem girişi ve çıkış noktaları ve genel sınıflar için tüm genel özellikler dahil olmak üzere ayrıntılı izleme bilgileri sağlar. Ayrıca, CLOB, BLOB, NCLOB, Okuyucu, <akış> dönüş değeri türleri dışında, giriş parametreleri, çıkış parametreleri ve yöntem dönüş değerleri içerir.

Aşağıdaki günlük kategorileri JDBC sürücüsünün 1.2 sürümünde vardı ve FINE günlük düzeyine sahipti: SQLServerConnection, SQLServerStatement, XA ve SQLServerDataSource. Sürüm 2.0 sürümünden itibaren bu kategoriler FINER düzeyine yükseltilir.
EN İYİ Son derece ayrıntılı izleme bilgileri sağlar. Bu ayar en düşük kayıt düzeyidir.

Aşağıdaki günlük kategorileri JDBC sürücüsünün 1.2 sürümünde vardı ve FINEST günlük düzeyine sahipti: TDS.DATA ve TDS.TOKEN. Sürüm 2.0 sürümünden itibaren, FINEST günlük düzeyini korumaktadır.
OFF Günlüğe kaydetmeyi kapatır.
HEPSİ Tüm iletilerin günlüğe kaydedilmesini etkinleştirir.

Günlük Kategorileri

Logger nesnesi oluşturduğunuzda, hangi varlık veya kategoriden günlük bilgisi almak istediğinizi belirtmeniz gerekir. JDBC sürücüsü, tümü com.microsoft.sqlserver.jdbc sürücü paketinde tanımlanan aşağıdaki genel günlük kategorilerini destekler.

İsim Description
Bağlantı SQLServerConnection sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINER olarak ayarlayabilir.
Statement SQLServerStatement sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINER olarak ayarlayabilir.
Veri Kaynağı SQLServerDataSource sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
Sonuç Kümesi SQLServerResultSet sınıfında iletileri günlüğe kaydeder. Uygulamalar, kayıt düzeyini FINER olarak ayarlayabilir.
Driver SQLServerDriver sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, kayıt seviyesini FINER olarak ayarlayabilir.
Resiliency SQLServerConnection sınıfında yalnızca boşta bağlantı dayanıklılığı geri bağlantılarıyla ilgili iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini "FINE" ve "FINER" olarak ayarlayabilir.
Redirection SQLServerConnection sınıfında yalnızca bağlantı açma yeniden denemeleri ile ilgili iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.

Microsoft JDBC Sürücüsü sürüm 2.0'dan itibaren, sürücü ayrıca com.microsoft.sqlserver.jdbc.internals paketini sağlar ve bu paket aşağıdaki iç günlük kategorileri için günlük desteği sunar.

İsim Description
AuthenticationJNI Windows ile tümleşik kimlik doğrulama sorunlarıyla ilgili iletileri günlüğe kaydeder (bağlantı özelliği authenticationScheme örtük veya açık bir şekilde NativeAuthentication olarak ayarlandığında).

Uygulamalar günlüğe kaydetme düzeyini FINEST ve FINE olarak ayarlayabilir.
SQLServerConnection SQLServerConnection sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini "FINE" ve "FINER" olarak ayarlayabilir.
SQLServerDataSource SQLServerDataSource, SQLServerConnectionPoolDataSource ve SQLServerPooledConnection sınıflarındaki iletileri günlüğe kaydeder.

Uygulamalar, günlüğe kaydetme düzeyini FINER olarak ayarlayabilir.
InputStream Aşağıdaki veri türleriyle ilgili iletileri günlüğe kaydeder: java.io.InputStream, java.io.Reader ve varchar, nvarchar ve varbinary veri türleri gibi maksimum tanımlayıcısı olan veri türleri.

Uygulamalar, günlüğe kaydetme düzeyini FINER olarak ayarlayabilir.
SQLServerException SQLServerException sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerResultSet SQLServerResultSet sınıfında iletileri günlüğe kaydeder. Uygulamalar günlüğe kaydetme düzeyini FINE, FINER ve FINEST olarak ayarlayabilir.
SQLServerStatement SQLServerStatement sınıfındaki iletileri günlüğe kaydeder. Uygulamalar günlüğe kaydetme düzeyini FINE, FINER ve FINEST olarak ayarlayabilir.
XA SQLServerXADataSource sınıfındaki tüm XA işlemleri için iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme seviyesini FINE ve FINER olarak ayarlayabilir.
KerbAuthentication Tür 4 Kerberos kimlik doğrulaması hakkındaki iletileri günlüğe kaydeder ( authenticationScheme bağlantı özelliği JavaKerberos olarak ayarlandığında). Uygulama, günlüğe kaydetme düzeyini FINE veya FINER olarak ayarlayabilir.
TDS.VERİ Sürücü ile SQL Server arasındaki TDS protokol düzeyindeki konuşmayı içeren iletileri günlüğe kaydeder. Gönderilen ve alınan her TDS paketinin ayrıntılı içeriği ASCII ve onaltılık olarak günlüğe kaydedilir. Oturum açma kimlik bilgileri, yani kullanıcı adları ve parolalar, günlüğe kaydedilmez. Diğer tüm veriler günlüğe kaydedilir.

Bu kategori çok detaylı ve ayrıntılı iletiler oluşturur ve yalnızca kayıt seviyesi FINEST olarak ayarlanarak etkinleştirilebilir.
TDS. Kanal Bu kategori, SQL Server ile TCP iletişim kanalının eylemlerini izler. Günlüğe kaydedilen iletiler, soket açma ve kapatmanın yanı sıra okuma ve yazma işlemlerini içerir. Ayrıca, daha önce Güvenli Yuva Katmanı (SSL) olarak bilinen bir Aktarım Katmanı Güvenliği (TLS), SQL Server bağlantısı kurmayla ilgili iletileri de izler.

Bu kategori yalnızca günlüğe kaydetme düzeyi FINE, FINER veya FINEST olarak ayarlanarak etkinleştirilebilir.
TDS. Yazar Bu kategori, TDS kanalına yazılanları izler. İçerikleri değil, yalnızca yazmaların uzunluğu takip ediliyor. Bu kategori, bir deyimin yürütülmesini iptal etmek için sunucuya bir dikkat sinyali gönderildiğinde de sorunları izler.

Bu kategori yalnızca günlüğe kaydetme düzeyi FINEST olarak ayarlanarak etkinleştirilebilir.
TDS Okuyucu Bu kategori, TDS kanalındaki belirli okuma işlemlerini FINEST düzeyinde izler. FINEST düzeyinde izleme ayrıntılı olabilir. UYARI ve CİDDİ düzeylerinde bu kategori, sürücü bağlantıyı kapatmadan önce SQL Server'dan geçersiz bir TDS protokolü aldığında izler.

Bu kategori yalnızca günlüğe kaydetme düzeyi FINER ve FINEST olarak ayarlanarak etkinleştirilebilir.
TDS.Komut Bu kategori, TDS komutlarının yürütülmesiyle ilişkili olan alt düzey durum geçişlerini ve diğer bilgileri, Transact-SQL deyim yürütmeleri, Sonuç Kümesi imleç getirileri ve onaylamalar gibi izler.

Bu kategori yalnızca günlüğe kaydetme düzeyi FINEST olarak ayarlanarak etkinleştirilebilir.
TDS.TOKEN Bu kategori yalnızca TDS paketleri içindeki belirteçleri günlüğe kaydeder ve TDS.DATA kategorisinden daha az ayrıntılıdır. Yalnızca günlüğe kaydetme düzeyi FINEST olarak ayarlanarak etkinleştirilebilir.

FINEST düzeyinde, bu kategori TDS tokenlerini yanıtta işlenirken izler. Geçersiz bir TDS belirteciyle karşılaşıldığında, bu kategori SEVERE düzeyinde izleme yapar.
SQL Server Veritabanı Meta Verisi SQLServerDatabaseMetaData sınıfında iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerResultSetMetaData SQLServerResultSetMetaData sınıfındaki mesajları günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerParameterMetaData SQLServerParameterMetaData sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerBlob SQLServerBlob sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerClob SQLServerClob sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerSQLXML SQLServerSQLXML dahili sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerDriver SQLServerDriver sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.
SQLServerNClob SQLServerNClob sınıfındaki iletileri günlüğe kaydeder. Uygulamalar, günlüğe kaydetme düzeyini FINE olarak ayarlayabilir.

Programlı olarak izlemenin etkinleştirilmesi

İzleme, bir Günlükçü nesnesi oluşturularak ve günlüğe kaydedilecek kategoriyi belirterek program aracılığıyla etkinleştirilebilir. Örneğin, aşağıdaki kod SQL deyimleri için günlüğe kaydetmeyi etkinleştirmeyi gösterir:

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

Kodunuzda loglamayı kapatmak için aşağıdaki kodu kullanın:

logger.setLevel(Level.OFF);

Tüm kullanılabilir kategorileri günlüğe kaydetmek için aşağıdaki kodu kullanın:

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

Belirli bir kategorinin günlüğe kaydedilmesini devre dışı bırakmak için aşağıdaki kodu kullanın:

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

logging.properties dosyasını kullanarak izlemeyi etkinleştirme

Java Çalışma Zamanı Ortamı (JRE) 8 yüklemenizin logging.properties dizininde veya Java 9 ve üstü için lib klasöründe bulunabilen conf dosyasını kullanarak izlemeyi de etkinleştirebilirsiniz. Bu dosya, izleme etkinleştirildiğinde kullanılacak günlükçüler ve işleyiciler için varsayılan değerleri ayarlamak için kullanılabilir.

Aşağıdaki yapılandırma, dosyalarda yapabileceğiniz ayarların logging.properties bir örneğidir:

# 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

Uyarı

Java.util.logging dosyasının logging.properties parçası olan LogManager nesnesini kullanarak dosyadaki özellikleri ayarlayabilirsiniz.

Ayrıca bakınız

JDBC sürücüsüyle ilgili sorunları tanılama