Ich habe danach gesucht und nur gefunden here und here, aber es löst nicht mein Problem.Wie arbeite ich mit parallelen Logs bei Golang?
Wie kann ich mit einer Standard-Art und Weise identifiziere das Protokoll die gleichzeitigen Protokolle wie JAVA funktioniert mit Thread-ID Trennung ?. Denn wenn ich eine gleichzeitige Methode sie protokolliert wird am Ausgang gemischt gedruckt werden, so dass ich glaube, dass der Logger einen Weg zur Identifizierung jeder Anforderung „thread“ haben muß
Ex:
package main
import "log"
func main() {
/* simulating 10000 users requests */
i := 1;
for ;i < 10000; i++ {
go getHello(i)
}
}
func getHello(d int){
log.Printf("m=getHello, i=%d,begin", d)
log.Println("m=getHello, processing the hello message")
log.Printf("m=getHello, i=%d, end", d)
}
Ausgang
2016/07/29 15:59:46 m=getHello, i=1017,begin
2016/07/29 15:59:46 m=getHello, processing the hello message
2016/07/29 15:59:46 m=getHello, i=1017, end
2016/07/29 15:59:46 m=getHello, processing the hello message
2016/07/29 15:59:46 m=getHello, i=1038, end
2016/07/29 15:59:46 m=getHello, i=311,begin
2016/07/29 15:59:46 m=getHello, processing the hello message
2016/07/29 15:59:46 m=getHello, i=311, end
2016/07/29 15:59:46 m=getHello, i=1023,begin
2016/07/29 15:59:46 m=getHello, processing the hello message
2016/07/29 15:59:46 m=getHello, i=1023, end
2016/07/29 15:59:46 m=getHello, i=991,begin
2016/07/29 15:59:46 m=getHello, processing the hello message
2016/07/29 15:59:46 m=getHello, i=991, end
Wie Sie sehen können, wenn ich kein int-Flag habe, ist es unmöglich zu wissen, welche der Anfragen protokolliert haben. In Java, C, C#, Delphy zum Beispiel protokolliere ich einfach die Thread-ID und alles ist in Ordnung.
Können Sie mir helfen, so etwas in Golang zu tun? Vielen Dank.
Obs: Wenn meine Frage bitte mich nicht gut erklären, warum auf Kommentare
Ist 'context' Paket in welcher Version verfügbar ?, habe ich bei '1.6.3' getestet und das Paket existiert nicht für mich – deFreitas
In meinem Fall wurde genadelt Änderung von' Kontext' nach '" golang.org/x/ net/context "' und run 'go get' – deFreitas
' context' ist neu in der stdlib in 1.7, aber 'golang.org/x/net/context' ist fast identisch. –