2014-09-11 42 views
6

NSLog(), milisaniye çözünürlüğü olan zaman damgalarını kullanır, ancak tüm günlük iletileri Uyarı düzeyinde olduğundan, künt bir araçtır.Apple Sistem İşlem süresi milisaniyede mi?

Apple Sistem Günlüğü, 8 farklı düzeyde, çok daha ince bir sistemdir. AMA ... zaman damgalarının sadece 1 saniyelik çözünürlüğü var. Zaman biçimleri hakkında adam sayfasını okudum, ama hepsi sadece ikinci sırada görünüyor.

Bu bilgi en azından NSLog'a açıktır. Bir saniyede çok şey devam edebilir; ASL ile daha iyi çözünürlük elde etmenin bir yolu var mı?

+1

'Console.app'da' Görünüm'> 'Milisaniye'' seçin. –

+2

Bu harika, bunu hiç görmedim. Ancak, bu Xcode konsol günlüğünü etkilemez. Bu yeni bir soru ortaya çıkarır: tüm günlük dosyalarında Xcode'un simülatörde veya iOS cihazında çalışan iOS cihazları için günlükleri nerede bulunur? –

+1

Konumun '~/Library/Logs/iOS Simulator//' –

cevap

0

".#" değerini, kesinliği belirtmek için ASL (ve syslog) içinde zaman biçimine ekleyebilirsiniz. Böylece "utc.3" milisaniye ile UTC formatında biçimlendirir. Bunu hem msg_fmt veya time_fmt argümanlarına ekleyebilirsiniz.

Zaman biçimi hassasiyeti yalnızca syslogd(1) belgesinde belgeleniyor gibi görünüyor. Neden asl(3)'a ulaşmadığından emin değilim.

: aşağıdaki gibi görünebilir

2016-02-01 19:16:39.561Z Info - Hello 

asl_add_output_file arasında msg_fmt argüman belirtme:

// setup, do once! 
aslclient log = asl_open(NULL, NULL, 0); 
asl_add_output_file(log, STDERR_FILENO, 
    "$Time $((Level)(str)) - $Message", // $Time here uses time_fmt arg on next line 
    ASL_TIME_FMT_UTC ".3", // time_fmt: append ".3" for milliseconds here 
    ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG), ASL_ENCODE_SAFE); 

// example log 
asl_log(log, NULL, ASL_LEVEL_INFO, "Hello"); 

// Note in the above ASL_TIME_FMT_UTC is #defined to "utc", so the we're 
// using compile-time string concatenation of "utc" ".3" to "utc.3". 
// Alternately you can just specify "utc.3" directly. 

ve çıkış: aşağıdaki gibi görünebilir time_fmt içinde asl_add_output_file ve belirterek kullanarak Örneğin

,

// setup, do once! 
aslclient log = asl_open(NULL, NULL, 0); 
asl_add_output_file(log, STDERR_FILENO, 
    // in msg_fmt below, use ISO8601 + ".6" for microseconds 
    "$((Time)(ISO8601.6)) $((Level)(str)) - $Message", 
    ASL_TIME_FMT_UTC, 
    ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG), ASL_ENCODE_SAFE); 

// example log 
asl_log(log, NULL, ASL_LEVEL_INFO, "Hello"); 

ve d çıkışı:

2016-02-01T14:16:39.562030-05 Info - Hello 

(kod yukarıdaki parçacıkları sadece ASL'deki saat biçimi hassas belirten göstermek için amaçlı olduğu dikkat. Gerçek kullanım, büyük olasılıkla, kurulum için bir dispatch_once içermelidir, günlüğe kaydetme için bir seri gönderme sırası kullanın.)

İlgili konular