我運行一個服務器,將日誌內容重定向到一個文件中,稱爲「current.log」,用於調試目的,這是我無法顯示給用戶的。但是我得到了一個場景,我需要向用戶展示特定日誌集,以便他們可以跟進後端進程。所以我試圖爲每個用戶(每個用戶一個日誌文件)寫另一組日誌(在一個自定義文件中),我需要向用戶顯示不包含任何安全數據的日誌。要解決這個將日誌內容寫入golang中的自定義文件
0
A
回答
2
一種方法是使用記錄機制在那裏你可以爲您記錄器對象(具有特定文件位置),然後使用objec噸寫日誌。因此,使用特定對象編寫的日誌將被重定向到該特定文件。
,我使用的記錄程序包是 「github.com/sadlil/gologger」
示例代碼:
package main
import (
"github.com/sadlil/gologger"
)
func main() {
logger := gologger.GetLogger(gologger.FILE, "/home/user/path/user.log")
logger.Log("Test file log")
}
注意:文件將自動創建在對象創建時間
,這樣您就可以動態地爲每個用戶創建一個記錄器對象(每個用戶都獲得不同的日誌文件),並且日誌將被重定向到該文件。 測井格式將是
[LOG] [2016年4月7日11時31分28秒] [主:: test.go ::主] [8]測試文件日誌
2
您可以使用lumberjack.v2,通過它您可以爲每個用戶定義一個自定義日誌文件。
在下面的代碼片段中,我使用一個簡單的布爾值來確定日誌內容是否應該添加到日誌文件中,或者不是爲每個用戶添加。
package main
import (
"gopkg.in/natefinch/lumberjack.v2"
"io/ioutil"
"log"
"strconv"
)
type user struct {
id int
logger *log.Logger
}
func createUser(id int, logWanted bool) user {
var l *log.Logger
if logWanted {
// Here the log content will be added in the user log file
userFIle := &lumberjack.Logger{
Filename: "user_log_" + strconv.Itoa(id) + ".log",
MaxSize: 250, // mb
MaxBackups: 5,
MaxAge: 10, // in days
}
l = log.New(userFIle, "User: ", log.Ldate|log.Ltime|log.Lshortfile)
} else {
// Here the log content will go nowhere
l = log.New(ioutil.Discard, "User: ", log.Ldate|log.Ltime|log.Lshortfile)
}
return user{id, l}
}
func doSomething(u user) {
u.logger.Printf("Log content: user id %v \n", u.id)
}
func main() {
user1 := createUser(1, true)
user2 := createUser(2, false)
user3 := createUser(3, true)
doSomething(user1)
doSomething(user2)
doSomething(user3)
}
這將創建一組新的滾動日誌文件與記錄每個用戶在打開。
- 「user_log_1.log」 爲USER1
- 「user_log_3.log」 爲用戶3
- 併爲用戶2
相關問題
- 1. Django自定義文件存儲 - 將內容寫入文件
- 2. 如何將日誌寫入golang中的.log文件?
- 3. WIX寫自定義日誌文件
- 4. 將節點調試日誌的內容寫入文件
- 5. 將日誌寫入文件
- 6. 的Bash shell腳本 - 寫入自定義日誌文件
- 7. Python mod_wsgi寫入自定義日誌文件,而不是Apache error_log
- 8. 將事件日誌寫入文件,powershell
- 9. 自定義構建任務:如何將輸出寫入構建日誌文件
- 10. 在自定義日誌中重寫URL
- 11. 在自定義網絡日誌中內嵌Flash內容?
- 12. 將日誌消息寫入日誌文件中openscript
- 13. heroku上的自定義日誌文件
- 14. 如何將自定義消息寫入MSI日誌?
- 15. 將自定義視圖的內容寫入SD卡上的大圖像文件
- 16. log4j不將日誌寫入文件
- 17. 如何將ApScheduler日誌寫入文件?
- 18. Python - 將日誌寫入文件
- 19. Android將日誌寫入文件
- 20. 寫入日誌文件
- 21. powershell寫入日誌文件
- 22. C#寫入日誌文件
- 23. 如何寫入自定義Windows事件日誌?
- 24. 解析自定義日誌文件
- 25. 使用stdout自定義日誌文件
- 26. BURN:自定義日誌文件位置
- 27. 自定義日誌文件創建 - Powershell
- 28. 自定義TFS生成日誌文件
- 29. Padrino自定義日誌文件
- 30. 我該如何寫一個自定義函數來將錯誤寫入我的日誌文件中?