我想在我的iPhone應用程序中創建兩個日誌文件。如果我使用freopen()將NSLog輸出重定向到一個文件,那麼所有的日誌語句都會進入一個提到的文件。
但我想把一些日誌語句放到一個文件中,而一些文件放到不同的文件中。
任何想法,我該怎麼做?在iPhone應用程序中創建多個日誌文件
回答
最好的方法是編寫自己的記錄器類作爲您替代NSLog()替代的替代品。這樣,您可以在運行時輕鬆確定應將哪些日誌寫入哪個文件。您的自定義類可以使用NLog()同時寫入控制檯。這似乎是最佳方法,因爲freopen()
只是批量重定向所有日誌輸出。
開始與伐木工人框架:https://github.com/robbiehanson/CocoaLumberjack
我希望把一些日誌報表合併成一個文件,而一些到不同的文件
有一對夫婦的方式來實現這一目標。這裏有一個例子: 添加2文件記錄器:
fileLoggerA = [[DDFileLogger alloc] init];
fileLoggerB = [[DDFileLogger alloc] init];
[DDLog addLogger:fileLoggerA];
[DDLog addLogger:fileLoggerB];
所以在這一點,所有的日誌報表將得到引導到兩個fileLogger1 & fileLogger2。接下來,我們將爲每個fileLogger添加一個「篩選器」,以便它們忽略不針對它們的日誌語句。
我們將創建2個不同的記錄宏做到這一點:考勤()&博客()
fileLoggerA只能從寫日誌考勤記錄語句()。 fileLoggerB只會從BLog()寫入日誌語句。
要進行設置,我們可以利用「日誌上下文」。你可以做簡單的東西如:
#define ALog(frmt, ...) SYNC_LOG_OBJC_MACRO(0, 0, 1, frmt, ##__VA_ARGS__)
#define BLog(frmt, ...) SYNC_LOG_OBJC_MACRO(0, 0, 2, frmt, ##__VA_ARGS__)
很明顯,你可以得到比這更先進的(如增加對日誌級別等支持),但要注意的是考勤如何擁有1「背景」,並BLog有一個「上下文」2.
現在你只需要創建一個「自定義格式化程序/過濾器」。這裏有一個例子:
- (NSString *)formatLogMessage:(DDLogMessage *)logMessage
{
if (logMessage->logContext == theContextIShouldLog)
return logMessage->logMsg;
else
return nil;
}
,當然,您的自定義格式/過濾器添加到文件記錄器:
[fileLoggerA setLogFormatter:[MyContextFilter filterWith:1]];
[fileLoggerB setLogFormatter:[MyContextFilter filterWith:2]];
這些主題的更多信息可以通過伐木工人項目頁面上找到:
https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels
- 1. 在Web應用程序中爲每個用戶創建日誌文件
- 2. 在iPhone應用程序中創建一個XML文件
- 3. spark應用程序不會創建日誌文件
- 4. Spark應用程序log4j日誌文件未創建
- 5. 爲應用程序安裝創建自定義日誌文件
- 6. VB6-如何在啓動應用程序時在VB6中創建日誌文件
- 7. 我的應用程序在Docker中啓動時無法創建日誌文件
- 8. 爲在web應用程序中創建的每個新登錄會話創建日誌文件
- 9. NLog不在MVC應用程序中創建日誌?
- 10. iPhone應用程序崩潰日誌
- 11. 如何在mfc中爲多線程應用程序創建通用日誌文件?
- 12. 呼應(創建)錯誤日誌文件
- 13. 在MFC(VC++)中創建日誌文件?
- 14. 在NodeJS中創建日誌文件
- 15. 在PowerShell中創建日誌文件
- 16. 創建iPhone應用程序以在iPhone中擁有多個用戶
- 17. 在Rails應用程序中爲每個Passenger進程創建單獨的日誌
- 18. 如何在rails應用程序加載config.logger之前創建日誌文件夾
- 19. 未創建日誌文件
- 20. 創建日誌文件C#
- 21. VBA創建日誌文件
- 22. 未創建日誌文件?
- 23. 爲iPhone創建一個文件夾應用程序
- 24. 在iPhone應用程序中使用多個文件
- 25. 是否可以使用JCL創建多個日誌文件?
- 26. 從多個應用程序/進程記錄到單個日誌文件
- 27. log4net - 只創建一個日誌文件
- 28. 如何在每個程序執行的log4j中創建日誌文件?
- 29. 如何禁用應用程序啓動時創建空日誌文件?
- 30. 如何在多線程應用程序中執行文件日誌記錄
這就是我的想法,但我正在尋找一些可以爲我做的框架,我可以節省時間來編寫自定義記錄器。感謝建議。 – Anshul