Skip to content

Commit da366b6

Browse files
author
hamed
committed
Session 14 logging examples
1 parent 614db7b commit da366b6

File tree

22 files changed

+586
-0
lines changed

22 files changed

+586
-0
lines changed

14-Logging/02-LogLibrary/example1.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package main
2+
3+
import (
4+
"log"
5+
"os"
6+
)
7+
8+
var (
9+
errorLogger *log.Logger
10+
warnLogger *log.Logger
11+
infoLogger *log.Logger
12+
)
13+
14+
func init() {
15+
file, err := os.OpenFile("log.txt", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
16+
if err != nil {
17+
log.Fatalln("Failed to open log file", err)
18+
}
19+
flags := log.Ldate | log.Ltime | log.Lshortfile
20+
21+
log.SetFlags(flags)
22+
23+
log.SetOutput(file)
24+
25+
errorLogger = log.New(file, "Error: ", flags)
26+
warnLogger = log.New(file, "Warn: ", flags)
27+
infoLogger = log.New(file, "Info: ", flags)
28+
}
29+
func main() {
30+
infoLogger.Println("Start of main")
31+
32+
Sum(1, 5)
33+
}
34+
35+
func Sum(a, b int) {
36+
warnLogger.Println("Start of Sum")
37+
println(a + b)
38+
warnLogger.Println("End of Sum")
39+
}

14-Logging/02-LogLibrary/log.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2022/07/29 13:26:48 Start of main
2+
2022/07/29 13:26:48 Start of Sum
3+
2022/07/29 13:26:48 End of Sum
4+
2022/07/29 13:27:01 Start of main
5+
2022/07/29 13:27:01 Start of Sum
6+
2022/07/29 13:27:01 End of Sum
7+
2022/07/29 13:29:20 example1.go:18: Start of main
8+
2022/07/29 13:29:20 example1.go:24: Start of Sum
9+
2022/07/29 13:29:20 example1.go:26: End of Sum
10+
2022/07/29 example1.go:18: Start of main
11+
2022/07/29 example1.go:24: Start of Sum
12+
2022/07/29 example1.go:26: End of Sum
13+
Info: 2022/07/29 13:33:47 example1.go:30: Start of main
14+
Warn: 2022/07/29 13:33:47 example1.go:36: Start of Sum
15+
Warn: 2022/07/29 13:33:47 example1.go:38: End of Sum
16+
{"time": "2022/07/29 13:33:47", "level": "Info", "msg": "Start of main"}
17+
{"time": "2022/07/29 13:33:47", "level": "Warn", "msg": "Start of Sum"}
18+
{"time": "2022/07/29 13:33:47", "level": "Warn", "msg": "End of Sum"}
19+
{"time": "2022/07/29 13:33:47", "level": "Info", "msg": "End of main"}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package core
2+
3+
import (
4+
"log"
5+
"os"
6+
7+
"github.com/rs/zerolog"
8+
"github.com/rs/zerolog/pkgerrors"
9+
)
10+
11+
func NewFileLogger() *zerolog.Logger {
12+
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
13+
zerolog.SetGlobalLevel(zerolog.InfoLevel)
14+
15+
file, err := os.OpenFile("log.txt", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
16+
17+
if err != nil {
18+
log.Println("Failed to open log file:", err)
19+
}
20+
21+
logger := zerolog.New(file).
22+
With().
23+
Timestamp().
24+
Str("AppName", "MyApp").
25+
Logger()
26+
27+
return &logger
28+
}

14-Logging/03-LogToFile/go.mod

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module logToFile
2+
3+
go 1.18
4+
5+
require (
6+
github.com/pkg/errors v0.9.1
7+
github.com/rs/zerolog v1.27.0
8+
)
9+
10+
require (
11+
github.com/mattn/go-colorable v0.1.12 // indirect
12+
github.com/mattn/go-isatty v0.0.14 // indirect
13+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
14+
)

14-Logging/03-LogToFile/go.sum

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
3+
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
4+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
5+
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
6+
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
7+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
8+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
9+
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
10+
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
11+
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
12+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
13+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg=
15+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

14-Logging/03-LogToFile/log.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{"level":"info","AppName":"MyApp","Category":"Search","DurationTime":80,"time":"2022-07-29T19:03:50+04:30","message":"Searching for a thing"}
2+
{"level":"error","AppName":"MyApp","error":"this is an error","time":"2022-07-29T19:03:50+04:30","message":"Error occurred"}
3+
{"level":"error","AppName":"MyApp","stack":[{"func":"func1","line":"31","source":"main.go"},{"func":"func2","line":"35","source":"main.go"},{"func":"func3","line":"43","source":"main.go"},{"func":"main","line":"23","source":"main.go"},{"func":"main","line":"250","source":"proc.go"},{"func":"goexit","line":"1571","source":"asm_amd64.s"}],"error":"this is an error (func1)","time":"2022-07-29T19:03:50+04:30","message":"Error occurred (func3 error)"}
4+
{"level":"info","AppName":"MyApp","Category":"Search","DurationTime":80,"time":"2022-07-29T19:04:08+04:30","message":"Searching for a thing"}
5+
{"level":"error","AppName":"MyApp","error":"this is an error","time":"2022-07-29T19:04:08+04:30","message":"Error occurred"}
6+
{"level":"error","AppName":"MyApp","stack":[{"func":"func1","line":"31","source":"main.go"},{"func":"func2","line":"35","source":"main.go"},{"func":"func3","line":"43","source":"main.go"},{"func":"main","line":"23","source":"main.go"},{"func":"main","line":"250","source":"proc.go"},{"func":"goexit","line":"1571","source":"asm_amd64.s"}],"error":"this is an error (func1)","time":"2022-07-29T19:04:08+04:30","message":"Error occurred (func3 error)"}
7+
{"level":"info","AppName":"MyApp","Category":"Search","DurationTime":80,"time":"2022-07-29T19:04:11+04:30","message":"Searching for a thing"}
8+
{"level":"error","AppName":"MyApp","error":"this is an error","time":"2022-07-29T19:04:11+04:30","message":"Error occurred"}
9+
{"level":"error","AppName":"MyApp","stack":[{"func":"func1","line":"31","source":"main.go"},{"func":"func2","line":"35","source":"main.go"},{"func":"func3","line":"43","source":"main.go"},{"func":"main","line":"23","source":"main.go"},{"func":"main","line":"250","source":"proc.go"},{"func":"goexit","line":"1571","source":"asm_amd64.s"}],"error":"this is an error (func1)","time":"2022-07-29T19:04:11+04:30","message":"Error occurred (func3 error)"}
10+
{"level":"info","AppName":"MyApp","Body":{},"Category":"Search","DurationTime":80,"time":"2022-07-29T19:13:20+04:30","message":"Searching for a thing"}
11+
{"level":"error","AppName":"MyApp","error":"this is an error","time":"2022-07-29T19:13:20+04:30","message":"Error occurred"}
12+
{"level":"error","AppName":"MyApp","stack":[{"func":"func1","line":"35","source":"main.go"},{"func":"func2","line":"39","source":"main.go"},{"func":"func3","line":"47","source":"main.go"},{"func":"main","line":"27","source":"main.go"},{"func":"main","line":"250","source":"proc.go"},{"func":"goexit","line":"1571","source":"asm_amd64.s"}],"error":"this is an error (func1)","time":"2022-07-29T19:13:20+04:30","message":"Error occurred (func3 error)"}
13+
{"level":"info","AppName":"MyApp","Body":{"Name":"test"},"Category":"Search","DurationTime":80,"time":"2022-07-29T19:13:48+04:30","message":"Searching for a thing"}
14+
{"level":"error","AppName":"MyApp","error":"this is an error","time":"2022-07-29T19:13:48+04:30","message":"Error occurred"}
15+
{"level":"error","AppName":"MyApp","stack":[{"func":"func1","line":"35","source":"main.go"},{"func":"func2","line":"39","source":"main.go"},{"func":"func3","line":"47","source":"main.go"},{"func":"main","line":"27","source":"main.go"},{"func":"main","line":"250","source":"proc.go"},{"func":"goexit","line":"1571","source":"asm_amd64.s"}],"error":"this is an error (func1)","time":"2022-07-29T19:13:48+04:30","message":"Error occurred (func3 error)"}

14-Logging/03-LogToFile/main.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package main
2+
3+
import (
4+
"logToFile/core"
5+
6+
"github.com/pkg/errors"
7+
)
8+
9+
type myStruct struct {
10+
Name string
11+
}
12+
13+
var logger = core.NewFileLogger()
14+
15+
func main() {
16+
17+
logger.Print("test")
18+
myStruct := myStruct{Name: "test"}
19+
logger.Info().Interface("Body", myStruct).Str("Category", "Search").
20+
Int("DurationTime", 80).
21+
Msg("Searching for a thing")
22+
23+
err := errors.New("this is an error")
24+
25+
logger.Error().Err(err).Msg("Error occurred")
26+
27+
err = func3()
28+
if err != nil {
29+
30+
logger.Error().Stack().Err(err).Msg("Error occurred (func3 error)")
31+
}
32+
}
33+
34+
func func1() error {
35+
return errors.New("this is an error (func1)")
36+
}
37+
38+
func func2() error {
39+
err := func1()
40+
if err != nil {
41+
return err
42+
}
43+
return nil
44+
}
45+
46+
func func3() error {
47+
err := func2()
48+
if err != nil {
49+
return err
50+
}
51+
return nil
52+
}
53+
54+
// trace
55+
// debug
56+
// info
57+
// warn
58+
// error
59+
// fatal(critical)
60+
// panic
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module loggingExample
2+
3+
go 1.18
4+
5+
require (
6+
github.com/mattn/go-colorable v0.1.12 // indirect
7+
github.com/mattn/go-isatty v0.0.14 // indirect
8+
github.com/pkg/errors v0.9.1 // indirect
9+
github.com/rs/zerolog v1.27.0 // indirect
10+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
11+
)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
3+
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
4+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
5+
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
6+
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
7+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
8+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
9+
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
10+
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
11+
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
12+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
13+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
14+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg=
15+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package main
2+
3+
import (
4+
"github.com/pkg/errors"
5+
6+
"github.com/rs/zerolog"
7+
"github.com/rs/zerolog/log"
8+
"github.com/rs/zerolog/pkgerrors"
9+
)
10+
11+
func main() {
12+
13+
//zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
14+
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
15+
zerolog.SetGlobalLevel(zerolog.InfoLevel)
16+
log.Print("test")
17+
18+
log.Info()
19+
.Str("Category", "Search")
20+
.Int("DurationTime", 80)
21+
.Msg("Searching for a thing")
22+
23+
err := errors.New("this is an error")
24+
25+
log.Error().Err(err).Msg("Error occurred")
26+
27+
err = func3()
28+
if err != nil {
29+
log.Error().Stack().Err(err).Msg("Error occurred (func3 error)")
30+
}
31+
}
32+
33+
func func1() error {
34+
return errors.New("this is an error (func1)")
35+
}
36+
37+
func func2() error {
38+
err := func1()
39+
if err != nil {
40+
return err
41+
}
42+
return nil
43+
}
44+
45+
func func3() error {
46+
err := func2()
47+
if err != nil {
48+
return err
49+
}
50+
return nil
51+
}
52+
53+
// trace
54+
// debug
55+
// info
56+
// warn
57+
// error
58+
// fatal(critical)
59+
// panic

0 commit comments

Comments
 (0)