2017-01-11 77 views
1

我正在尋找一些有關編寫遊戲服務器日誌的最佳/常用實踐的建議,我使用Java編寫(第一次使用服務器/客戶端概念,而我從未用日誌記錄做任何事情)。我嘗試了一些谷歌搜索,但涉及的關鍵詞是含糊不清,並沒有提出任何我的問題的答案。爲Java服務器編寫日誌的最佳實踐

我有一個服務器與用戶,遊戲大廳和遊戲。我認爲我應該創建一個日誌來保存服務器上發生的所有事情的歷史記錄。在這個日誌中,我想我應該記錄服務器本身(啓動,關閉,正在處理的命令)和套接字連接(新/丟失的客戶端,傳入/傳出的消息)的狀態更改。

我不確定這是最好的做法,或者相反/還有一個更多的人類可讀消息,如「Bob781加入大廳#4」的日誌。或者「microman12在比賽中擊敗sun44」。

  • 我應該將日誌寫入控制檯還是寫入文件? (2個獨立的文件?)
  • 哪些格式最好或最常用?他們應該是相同的格式?
  • 我碰到過「Common Log Format」,這是套接字連接的最佳格式選擇嗎?它可以用於服務器狀態嗎?
  • 我應該在java.util.logging中使用某些東西還是隻是自己輸出字符串?
+0

在服務器上向控制檯寫入日誌有什麼意義?沒有人會看到它。即使嘗試也浪費時間。此外,服務器程序在後臺運行,所以它們不需要*控制檯來寫入。 – Andreas

+0

我總是從頭開始尋找現有的解決方案。我知道有一個事實,即將日誌輸出到不同的文件取決於它所屬的日誌消息的類型是非常有用的。這也提出了你想要做多少日誌記錄的問題?也許在某種程度上創建另一個文件或覆蓋現有的文件...很多的可能性。 –

+0

@RAZ_Muh_Taz我想我真的只是想做足夠的日誌記錄來學習它的基礎知識。 – tribes891

回答

0

您總是想從頭開始尋找現有解決方案。當您使用/創建日誌,我建議根據我的經驗,下面的提示

  1. 確保您可以可靠檢索日誌時,你可能需要他們。
  2. 可以根據您要查找的內容輕鬆找到日誌文件。例如,如果特定遊戲大廳出現問題,您應該能夠輕鬆導航到與該遊戲大廳有關的文件或目錄。沒有比解析巨大的日誌文件更糟糕的了......
  3. 使每個日誌消息都有意義。爲了記錄日誌,不要只記錄東西。您將希望能夠讀取日誌消息並相對知道消息來自的服務器代碼中的哪個位置。當你遇到服務器代碼中的錯誤時,這將有助於以後的工作。
  4. 將每個日誌消息的時間標記在創建的位置,而不是寫入日誌文件的時間。