Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.