2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用lumberjack.v2,通過它您可以為每個(gè)用戶定義一個(gè)自定義日志文件。
在以下代碼段中,我使用一個(gè)簡單的布爾值來確定是否應(yīng)將每個(gè)用戶的日志內(nèi)容添加到日志文件中。
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)
}
這將創(chuàng)建一個(gè)新的組滾動日志文件與原來的日志中的每個(gè)用戶上。
user1 的“user_log_1.log”
user3 的“user_log_3.log”
并且沒有用戶 2 的日志文件

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
解決此問題的一種方法是使用記錄器機(jī)制,您可以在其中為記錄器創(chuàng)建一個(gè)對象(具有特定文件位置),然后使用該對象寫入日志。這樣,使用特定對象寫入的日志將被重定向到該特定文件。
我使用的記錄器包是“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")
}
注意:文件將在對象創(chuàng)建時(shí)自動創(chuàng)建
因此您可以為每個(gè)用戶動態(tài)創(chuàng)建一個(gè)記錄器對象(每個(gè)用戶獲得不同的日志文件),并且日志將被重定向到該文件。日志格式將是
[LOG] [2016-04-07 11:31:28] [main::test.go::main] [8] 測試文件日志
- 2 回答
- 0 關(guān)注
- 336 瀏覽
添加回答
舉報(bào)