# Günlüğe kaydetme ve tanılama

QV2QS, her çalıştırma sırasında yapılandırılmış tanılama günlükleri yazar. Günlük kaydı sistemi iki katmandan oluşur: çalıştırmalar arasında varlığını sürdüren kalıcı bir sistem günlüğü ve dönüştürme çıktısıyla birlikte gelen çalıştırma başına yapılandırılmış bir günlük.

## Sistem günlüğü

QV2QS, disk üzerinde sabit bir konumda döngüsel bir günlük dosyası tutar. Sistem günlüğü, yürütülebilir dosya başlatıldığında başlar ve herhangi bir proje veya toplu işten bağımsız olarak uygulama düzeyindeki olayları kaydeder.

Konum: `%LOCALAPPDATA%\QV2QS\qv2qs.log`

Sistem günlüğü, aşağıdaki ayarlara sahip döngüsel bir dosya işleyicisi kullanır.

| Ayar | Değer |
| --- | --- |
| Maksimum dosya boyutu | 25 MB |
| Saklanan yedekleme dosyaları | 3 |
| Dosya deseni | `qv2qs.log`, `qv2qs.log.1`, `qv2qs.log.2`, `qv2qs.log.3` |

Etkin günlük dosyası 25 MB'a ulaştığında, QV2QS dosyayı döndürür ve yeni bir günlük dosyası oluşturur. En son üç yedek saklanır. Daha eski yedekler otomatik olarak silinir.

## Çalıştırma başına yapılandırılmış günlük

Her dönüştürme çalıştırması, o çalıştırmaya ait ayrıntılı olayları içeren ayrı bir günlük dosyası oluşturur. Dosya `qv2qs_run_<version>_<timestamp>.log` olarak adlandırılmıştır ve bir JSON veri sütununa sahip sekmeyle ayrılmış değerler (TSV) biçiminde yazılmıştır.

Varsayılan konum: `%LOCALAPPDATA%\QV2QS\logs\`

Tek proje modunda QV2QS, çıktı klasörü başlatıldıktan sonra günlük dosyasını proje çıktı klasörünün `logs/` alt klasörüne (örneğin, `<outputDir>/Sales/logs/`) taşır. Günlük dosyası, dönüştürme çıktısına dahil edilir.

Toplu modda, proje bazlı günlükler her proje çıktı klasörünün içindeki `logs/` alt klasörüne yazılır.

### Günlük dosyası biçimi

Her günlük dosyası bir TSV başlık satırıyla başlar:

```
ts_utc	level	version	run_id	logger	event	message	data
```

| Sütun | Açıklama |
| --- | --- |
| `ts_utc` | Milisaniye kesinliğinde UTC cinsinden ISO 8601 zaman damgası |
| `level` | Günlük düzeyi: `DEBUG`, `INFO`, `WARNING`, `ERROR` veya `CRITICAL` |
| `version` | QV2QS sürümü |
| `run_id` | `YYYYMMDD-HHMMSS-<hex>` biçiminde benzersiz çalıştırma tanımlayıcısı |
| `logger` | Logger adı (genellikle `qv2qs`) |
| `event` | Olay türü dizesi (örneğin, `startup`, `conversion_complete`, `batch_local_complete`) |
| `message` | İnsan tarafından okunabilir açıklama |
| `data` | Bağlamsal anahtar-değer çiftleri içeren JSON nesnesi |

### Zaman damgası çakışmaları

İki çalıştırma aynı saniye içinde başlar ve aynı zaman damgasını üretirse, QV2QS üzerine yazılmasını önlemek için dosya adına `_2`, `_3` veya sonraki sayıları ekler.

## Hangi günlük kontrol edilmeli

QV2QS, bir çalıştırmanın farklı aşamalarında iki ayrı günlüğe yazar. Sistem günlüğü her zaman kullanılabilir. Çalıştırma başına günlük, yalnızca başlangıç ilklendirmesi tamamlandıktan sonra oluşturulur.

| Senaryo | İlk kontrol edilecek log | Neden |
| --- | --- | --- |
| İşlem çöküyor veya hemen sonlanıyor | Sistem günlüğü | Çalıştırma başına günlük henüz oluşturulmadı |
| Dönüştürme başlamadan önce PRJ oluşturma başarısız oluyor | Sistem günlüğü | PRJ olayları, çıktı dizini başlatılmadan önce günlüğe kaydedilir |
| Toplu çalıştırma, başarısız dosyaları ayrıntı olmadan gösteriyor | Sistem günlüğü | Toplu iş düzeyindeki hatalar (eksik QlikView Desktop, önkoşul başarısızlıkları) sistem günlüğüne kaydedilir |
| Dönüştürme beklenmeyen çıktı üretiyor | Çıktı dizinindeki çalıştırma başına günlük | Nesne düzeyindeki dönüştürme kararları ve uyarılar, çalıştırma başına günlüğe kaydedilir |
| Bulut dağıtımı başarısız oluyor | Çıktı dizinindeki çalıştırma başına günlük | API çağrıları, kimlik doğrulama hataları ve yükleme ilerlemesi, çalıştırma başına günlüğe kaydedilir |

Bilgi notu

Sistem günlüğü ve çalıştırma başına günlük, her ikisi de etkin olduğunda çakışma süresi boyunca aynı olayları kaydeder. Sistem günlüğü, işlem başlatıldığında başlar. Çalıştırma başına günlük, komut satırı bağımsız değişkenleri ayrıştırıldıktan ve çıktı dizini oluşturulduktan sonra başlar. Çalıştırma başına günlük oluşturulmadan önce bir hata oluşursa yalnızca sistem günlüğü tanılama bilgilerini içerir.

## Günlük düzeyleri

En ayrıntılıdan en az ayrıntılıya doğru listelenmiş beş günlük düzeyi mevcuttur.

| Seviye | Açıklama |
| --- | --- |
| `DEBUG` | Sorun giderme için detaylı tanılama bilgileri |
| `INFO` | Genel operasyonel mesajlar (varsayılan) |
| `WARNING` | Dönüştürmeyi engellemeyen beklenmeyen durumlar |
| `ERROR` | Bireysel nesneleri veya işlemleri etkileyen hatalar |
| `CRITICAL` | Yürütmeyi durduran ciddi hatalar |

Günlük düzeyini `--logLevel` veya `QV2QS_LOG_LEVEL` ortam değişkeni ile ayarlayın. Her ikisi de ayarlandığında CLI bayrağı önceliklidir.

En ayrıntılı çıktıyı yakalamak için `--logLevel DEBUG` değerini ayarlayın. Hata ayıklama düzeyindeki girdiler; dönüştürme kararlarını, bulut API çağrılarını, komut dosyası değişikliklerini ve nesne işleme ayrıntılarını içerir.

Komut satırını değiştirmeden hata ayıklama günlüğünü etkinleştirmek için, QV2QS'i çalıştırmadan önce ortam değişkenini ayarlayın:

```
set QV2QS_LOG_LEVEL=DEBUG
QV2QS.exe --prjPath ./MyApp-prj --outputDir ./output --qvw MyApp.qvw --unbuildOnly
```

## Günlük temizleme

Günlük dosyaları, kalıcı günlük dizininde çalıştırmalar boyunca birikir. Bir çalıştırmanın başlangıcında 30 günden eski günlük dosyalarını silmek için `--cleanLogs` kullanın. Temizleme işlemi yalnızca kalıcı günlük dizinine uygulanır; çıktı dizinlerindeki proje başına günlükler etkilenmez.

## Gizli bilgi maskeleme

Günlük kayıtları hassas değerleri otomatik olarak maskeler. API anahtarları, belirteçler, parolalar ve istemci gizli dizileri yalnızca son dört karakteri gösterecek şekilde gizlenir. Gizli bilgiler içeren komut satırı bağımsız değişkenleri de günlüğe kaydedildiğinde maskelenir.

## QlikView Desktop motoru günlük kaydı

PRJ oluşturma etkinleştirildiğinde QV2QS, her dosya için hangi QlikView Desktop motorunun kullanıldığını günlüğe kaydeder. `prj_generate_start` günlük olayı, paketlenmiş taşınabilir motorun mu yoksa sistemde yüklü bir sürümün mü etkin olduğunu kaydeder ve mevcut olduğunda paketlenmiş yürütülebilir dosyanın dosya sürümünü içerir.

QlikView Desktop ile Bağlantı kurulduktan sonra, `prj_qv_ready` olayı çalışan motor tarafından bildirilen QlikView sürümünü kaydeder (örneğin, `12.100.20100.0`). Birlikte gelen motor kullanıldığında, `exe_file_version` alanı yürütülebilir dosyadan okunan dosya sürümünü kaydeder.

Toplu modda, `prj_batch_prereq` günlük olayı, herhangi bir dosya işlenmeden önce tüm toplu işlem için motor seçimini ve paketlenmiş sürümü kaydeder. Ne paketlenmiş bir motor ne de bir sistem kurulumu mevcutsa, hata sistem günlüğüne `prj_batch_no_qv` olarak kaydedilir.

Motor keşfi sırasında kontrol edilen dosya yolları da dahil olmak üzere ayrıntılı motor çözümleme adımlarını yakalamak için `--logLevel DEBUG` öğesini ayarlayın.

## Konsol çıktısı ile dosya günlük kaydı karşılaştırması

Konsol çıktısı ve dosya günlük kaydı bağımsız sistemlerdir.

| Yön | Konsol | Dosya günlüğü |
| --- | --- | --- |
| Biçim | İsteğe bağlı renkler ve yükleme simgeleri içeren biçimlendirilmiş metin | JSON verisi içeren yapılandırılmış TSV |
| Tarafından denetlenir | `--console pretty\\|plain\\|silent\\|ui` | `--logLevel`, `--logDir` |
| İçerik | Kullanıcıya yönelik ilerleme ve sonuçlar | Tam tanılama olayları |
| Gizli bilgi maskeleme | Uygulanamaz | Otomatik olarak uygulandı |

Konsol çıktısı günlük dosyalarında görünmüyor. `--console silent` bayrağı, dosya günlük kaydını etkilemeden konsol çıktısını bastırır.

## CLI argümanları

| Bağımsız Değişken | Açıklama | Varsayılan |
| --- | --- | --- |
| `--logLevel LEVEL` | Günlük ayrıntı düzeyi: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | `INFO` |
| `--logDir FOLDER` | Her çalıştırma için günlük çıkış klasörünü geçersiz kılın. Göreli yollar, çıktı dizininden değil, geçerli çalışma dizininden çözümlenir. `%LOCALAPPDATA%` konumundaki kalıcı sistem günlüğünü etkilemez. | `%LOCALAPPDATA%\QV2QS\logs\` (tek proje) veya `<outputDir>/logs/` (toplu) |
| `--cleanLogs` | Çalıştırmadan önce 30 günden eski günlük dosyalarını silin | Kapalı |

## Daha fazla bilgi edinin

* [Bağımsız değişken başvurusu](https://help.qlik.com/tr-TR/migration/Content/Qv2qsMigration/command-line-interface/argument-reference.htm)
* [sorunlarını giderme](https://help.qlik.com/tr-TR/migration/Content/Qv2qsMigration/troubleshooting/index.htm)