我正在Mac上開發一個Go程序,並在Windows上安裝了Parallels,以便我可以在兩個平臺上進行測試。我的程序運行良好。我可以在我的Mac上編譯一個Windows「.exe」文件並從Windows運行它,除了日誌文件外,它運行良好。跨平臺登錄Golang
我已經設置了記錄寫入其輸出到文件中,像這樣:
log.SetOutput(projectsLog)
凡projectsLog被宣佈在其上方,如下圖所示:
projectsLog *os.File
我使用log.Printf聲明因爲我想格式化輸出。一個例子如下所示:
log.Printf("Error: wrong Hra Class value %s in row %v for project/path %s", hraClass, (rowNum + 1), testDir)
這在Mac上工作得很好。每條使用log.Printf的行都記錄在一個單獨的行上,但在Windows上,行分隔符不顯示,並且我得到一行沒有換行符的行。我很清楚unix和windows之間的「\ r」和「\ r \ n」區別。但是我認爲log.Printf會根據它運行的平臺而正確運行?
如果我的假設是錯誤的,那麼我有哪些選項可以確保日誌文件在Windows上可讀?如果可以的話,我不想通過標誌,例如,平臺窗口或其他類似的東西。這可以以透明的方式處理嗎?
1.您的假設是錯誤的,log.Printf不會執行任何「Windows魔術」並終止具有相應的行\ n。 2.只需在Windows上使用一些普通程序即可讀取日誌文件,即「\ n」作爲行結尾(例如Notepad ++),並遠離破碎的東西,這需要\ r \ n作爲行結尾。 log.Printf或您的代碼沒有任何問題。 – Volker
'log'和'fmt'包不會改變以平臺結尾的行(順便說一句,'\ r'實際上只用於舊的mac和其他已久的系統)。最好使用能夠在沒有回車的情況下讀取文件的文本編輯器。 – JimB
@volker,謝謝。我安裝了Notepad ++,它讀取我的日誌文件很好。用記事本和記事本++。我已經離開Windows很長一段時間了,所以有點生疏。 – Bharat