Skip to content

Commit 22778e6

Browse files
committed
feat(logging): a lot of progress on moving to new logging lib, grafana#4590
1 parent 25899b7 commit 22778e6

File tree

18 files changed

+315
-708
lines changed

18 files changed

+315
-708
lines changed

conf/defaults.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ log_rotate = true
273273
max_lines = 1000000
274274

275275
# Max size shift of single file, default is 28 means 1 << 28, 256MB
276-
max_lines_shift = 28
276+
max_size_shift = 28
277277

278278
# Segment log daily, default is true
279279
daily_rotate = true

conf/sample.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ check_for_updates = true
253253
;max_lines = 1000000
254254

255255
# Max size shift of single file, default is 28 means 1 << 28, 256MB
256-
;max_lines_shift = 28
256+
;max_size_shift = 28
257257

258258
# Segment log daily, default is true
259259
;daily_rotate = true

pkg/api/dashboard.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ func isDashboardStarredByUser(c *middleware.Context, dashId int64) (bool, error)
3131
}
3232

3333
func GetDashboard(c *middleware.Context) {
34+
log.New("test", "asd").Error("muppets")
3435
slug := strings.ToLower(c.Params(":slug"))
3536

3637
query := m.GetDashboardQuery{Slug: slug, OrgId: c.OrgId}

pkg/cmd/grafana-server/main.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ func init() {
3939
}
4040

4141
func main() {
42-
4342
v := flag.Bool("v", false, "prints current version and exits")
4443
flag.Parse()
4544
if *v {
@@ -48,11 +47,17 @@ func main() {
4847
}
4948

5049
buildstampInt64, _ := strconv.ParseInt(buildstamp, 10, 64)
50+
if buildstampInt64 == 0 {
51+
buildstampInt64 = time.Now().Unix()
52+
}
5153

5254
setting.BuildVersion = version
5355
setting.BuildCommit = commit
5456
setting.BuildStamp = buildstampInt64
5557

58+
logger := log.New("main")
59+
logger.Info("Starting Grafana", "version", version, "commit", commit, "compiled", time.Unix(buildstampInt64, 0))
60+
5661
go listenToSystemSignels()
5762

5863
flag.Parse()

pkg/cmd/grafana-server/web.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package main
66
import (
77
"fmt"
88
"net/http"
9+
"os"
910
"path"
1011

1112
"gopkg.in/macaron.v1"
@@ -18,6 +19,8 @@ import (
1819
"github.com/grafana/grafana/pkg/setting"
1920
)
2021

22+
var logger log.Logger
23+
2124
func newMacaron() *macaron.Macaron {
2225
macaron.Env = setting.Env
2326
m := macaron.New()
@@ -76,23 +79,26 @@ func mapStatic(m *macaron.Macaron, rootDir string, dir string, prefix string) {
7679
}
7780

7881
func StartServer() {
82+
logger = log.New("server")
7983

8084
var err error
8185
m := newMacaron()
8286
api.Register(m)
8387

8488
listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort)
85-
log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl)
89+
logger.Info("Server Listening", "address", listenAddr, "protocol", setting.Protocol, "subUrl", setting.AppSubUrl)
8690
switch setting.Protocol {
8791
case setting.HTTP:
8892
err = http.ListenAndServe(listenAddr, m)
8993
case setting.HTTPS:
9094
err = http.ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m)
9195
default:
92-
log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
96+
logger.Error("Invalid protocol", "protocol", setting.Protocol)
97+
os.Exit(1)
9398
}
9499

95100
if err != nil {
96-
log.Fatal(4, "Fail to start server: %v", err)
101+
logger.Error("Fail to start server", "error", err)
102+
os.Exit(1)
97103
}
98104
}

pkg/log/console.go

Lines changed: 0 additions & 157 deletions
This file was deleted.

pkg/log/file.go

Lines changed: 21 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,39 @@
55
package log
66

77
import (
8-
"encoding/json"
98
"errors"
109
"fmt"
1110
"io/ioutil"
12-
"log"
1311
"os"
1412
"path/filepath"
1513
"strings"
1614
"sync"
1715
"time"
16+
17+
"github.com/inconshreveable/log15"
1818
)
1919

2020
// FileLogWriter implements LoggerInterface.
2121
// It writes messages by lines limit, file size limit, or time frequency.
2222
type FileLogWriter struct {
23-
*log.Logger
2423
mw *MuxWriter
25-
// The opened file
26-
Filename string `json:"filename"`
2724

28-
Maxlines int `json:"maxlines"`
25+
Format log15.Format
26+
Filename string
27+
Maxlines int
2928
maxlines_curlines int
3029

3130
// Rotate at size
32-
Maxsize int `json:"maxsize"`
31+
Maxsize int
3332
maxsize_cursize int
3433

3534
// Rotate daily
36-
Daily bool `json:"daily"`
37-
Maxdays int64 `json:"maxdays"`
35+
Daily bool
36+
Maxdays int64
3837
daily_opendate int
3938

40-
Rotate bool `json:"rotate"`
41-
42-
startLock sync.Mutex // Only one log can write to the file
43-
44-
Level LogLevel `json:"level"`
39+
Rotate bool
40+
startLock sync.Mutex
4541
}
4642

4743
// an *os.File writer with locker.
@@ -66,37 +62,29 @@ func (l *MuxWriter) SetFd(fd *os.File) {
6662
}
6763

6864
// create a FileLogWriter returning as LoggerInterface.
69-
func NewFileWriter() LoggerInterface {
65+
func NewFileWriter() *FileLogWriter {
7066
w := &FileLogWriter{
7167
Filename: "",
68+
Format: log15.LogfmtFormat(),
7269
Maxlines: 1000000,
7370
Maxsize: 1 << 28, //256 MB
7471
Daily: true,
7572
Maxdays: 7,
7673
Rotate: true,
77-
Level: TRACE,
7874
}
7975
// use MuxWriter instead direct use os.File for lock write when rotate
8076
w.mw = new(MuxWriter)
81-
// set MuxWriter as Logger's io.Writer
82-
w.Logger = log.New(w.mw, "", log.Ldate|log.Ltime)
8377
return w
8478
}
8579

86-
// Init file logger with json config.
87-
// config like:
88-
// {
89-
// "filename":"log/gogs.log",
90-
// "maxlines":10000,
91-
// "maxsize":1<<30,
92-
// "daily":true,
93-
// "maxdays":15,
94-
// "rotate":true
95-
// }
96-
func (w *FileLogWriter) Init(config string) error {
97-
if err := json.Unmarshal([]byte(config), w); err != nil {
98-
return err
99-
}
80+
func (w *FileLogWriter) Log(r *log15.Record) error {
81+
data := w.Format.Format(r)
82+
w.docheck(len(data))
83+
_, err := w.mw.Write(data)
84+
return err
85+
}
86+
87+
func (w *FileLogWriter) Init() error {
10088
if len(w.Filename) == 0 {
10189
return errors.New("config must have filename")
10290
}
@@ -131,17 +119,6 @@ func (w *FileLogWriter) docheck(size int) {
131119
w.maxsize_cursize += size
132120
}
133121

134-
// write logger message into file.
135-
func (w *FileLogWriter) WriteMsg(msg string, skip int, level LogLevel) error {
136-
if level < w.Level {
137-
return nil
138-
}
139-
n := 24 + len(msg) // 24 stand for the length "2013/06/23 21:00:22 [T] "
140-
w.docheck(n)
141-
w.Logger.Println(msg)
142-
return nil
143-
}
144-
145122
func (w *FileLogWriter) createLogFile() (*os.File, error) {
146123
// Open the log file
147124
return os.OpenFile(w.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
@@ -227,7 +204,7 @@ func (w *FileLogWriter) deleteOldLog() {
227204
}
228205

229206
// destroy file logger, close file writer.
230-
func (w *FileLogWriter) Destroy() {
207+
func (w *FileLogWriter) Close() {
231208
w.mw.fd.Close()
232209
}
233210

@@ -237,7 +214,3 @@ func (w *FileLogWriter) Destroy() {
237214
func (w *FileLogWriter) Flush() {
238215
w.mw.fd.Sync()
239216
}
240-
241-
func init() {
242-
Register("file", NewFileWriter)
243-
}

pkg/log/handlers.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package log
2+
3+
type DisposableHandler interface {
4+
Close()
5+
}

0 commit comments

Comments
 (0)