2012-01-04 22 views
3

我正在爲OS X編寫一個應用程序,並且需要從日誌中獲取消息以發送回服務器進行分析/故障排除。我知道我可以使用Apple系統日誌(ASL)功能來獲得我想要的,但只想獲取當前會話的日誌消息。我可以搶時間在我的AppDelegate init方法:如何確定可可(OS X)應用程序的開始時間

// now minus one second 
    NSDate *startTime = [NSDate dateWithTimeIntervalSinceNow:-1]; 

但不知道是否該系統可能當應用程序啓動更加準確的記錄。我看了NSProcessInfo,但沒有看到任何相關的東西。除了在應用程序本身中記錄時間外,是否有方法可以確定流程的開始時間?

回答

7

我沒有在Mac方便的驗證,如果這個工程在OS X,但C標準庫提供的<time.h>頭的clock()功能,可以連同CLOCKS_PER_SEC來獲得,因爲那經過的秒數你的程序啓動的時間。

編輯

這應該讓你從你的程序的啓動一秒內的時間,在什麼時候,不管你調用它:

NSDate *startTime = [NSDate dateWithTimeIntervalSinceNow:-clock()/CLOCKS_PER_SEC]; 
+0

這並沒有真正提供對任何優勢OP提到的基於NSDate的方法。我認爲他正在尋找一種方式來讀取系統的應用程序啓動記錄,而無需在啓動時自行存儲日期。 – 2012-01-04 17:37:38

+2

@AndrewMadsen這個*是'clock()'的作用 - 根據鏈接的文檔,它「返回自程序啓動以來流逝的時鐘滴答數。」不過,這個名字有誤導性。 – dasblinkenlight 2012-01-04 17:40:32

+0

此方法至少比我之前使用的應用程序的開始時間提供了更準確的度量。謝謝! – Jonukas 2012-01-04 17:51:42

相關問題