Skip to content

Commit 7e82610

Browse files
committed
godoc update and improvements
1 parent b8df3d2 commit 7e82610

File tree

6 files changed

+47
-24
lines changed

6 files changed

+47
-24
lines changed

console_receiver.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"io"
1010
"os"
1111
"runtime"
12+
"sync"
1213

1314
"aahframework.org/config.v0"
1415
)
@@ -32,6 +33,7 @@ var (
3233
// ConsoleReceiver writes the log entry into os.Stderr.
3334
// For non-windows it writes with color.
3435
type ConsoleReceiver struct {
36+
rw *sync.RWMutex
3537
out io.Writer
3638
formatter string
3739
flags *[]FlagPart
@@ -58,6 +60,8 @@ func (c *ConsoleReceiver) Init(cfg *config.Config) error {
5860

5961
// SetPattern method initializes the logger format pattern.
6062
func (c *ConsoleReceiver) SetPattern(pattern string) error {
63+
c.rw.Lock()
64+
defer c.rw.Unlock()
6165
flags, err := parseFlag(pattern)
6266
if err != nil {
6367
return err
@@ -77,6 +81,8 @@ func (c *ConsoleReceiver) IsCallerInfo() bool {
7781

7882
// Log method writes the log entry into os.Stderr.
7983
func (c *ConsoleReceiver) Log(entry *Entry) {
84+
c.rw.RLock()
85+
defer c.rw.RUnlock()
8086
if c.isColor {
8187
_, _ = c.out.Write(levelToColor[entry.Level])
8288
}

default.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,21 @@ func Panicln(format string, v ...interface{}) {
123123
panic(fmt.Sprintf(format, v...))
124124
}
125125

126+
// SetDefaultLogger method sets the given logger instance as default logger.
127+
func SetDefaultLogger(l *Logger) {
128+
std = l
129+
}
130+
131+
// SetLevel method sets log level for default logger.
132+
func SetLevel(level string) error {
133+
return std.SetLevel(level)
134+
}
135+
136+
// SetPattern method sets the log format pattern for default logger.
137+
func SetPattern(pattern string) error {
138+
return std.SetPattern(pattern)
139+
}
140+
126141
func init() {
127142
cfg, _ := config.ParseString("log { }")
128143
std, _ = New(cfg)

file_receiver.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"io"
1111
"os"
1212
"path/filepath"
13+
"sync"
1314
"time"
1415

1516
"aahframework.org/config.v0"
@@ -20,6 +21,7 @@ var _ Receiver = &FileReceiver{}
2021

2122
// FileReceiver writes the log entry into file.
2223
type FileReceiver struct {
24+
rw *sync.RWMutex
2325
filename string
2426
out io.Writer
2527
formatter string
@@ -74,6 +76,8 @@ func (f *FileReceiver) Init(cfg *config.Config) error {
7476

7577
// SetPattern method initializes the logger format pattern.
7678
func (f *FileReceiver) SetPattern(pattern string) error {
79+
f.rw.Lock()
80+
defer f.rw.Unlock()
7781
flags, err := parseFlag(pattern)
7882
if err != nil {
7983
return err
@@ -97,6 +101,8 @@ func (f *FileReceiver) IsCallerInfo() bool {
97101

98102
// Log method logs the given entry values into file.
99103
func (f *FileReceiver) Log(entry *Entry) {
104+
f.rw.RLock()
105+
defer f.rw.RUnlock()
100106
if f.isRotate() {
101107
_ = f.rotateFile()
102108
}

formatter.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,8 @@ func applyFormatter(formatter string, flags *[]FlagPart, entry *Entry) []byte {
8585
return textFormatter(flags, entry)
8686
}
8787

88-
lm, err := jsonFormatter(entry)
89-
if err == nil {
90-
return lm
91-
}
92-
93-
return []byte(err.Error())
88+
lm, _ := jsonFormatter(entry)
89+
return lm
9490
}
9591

9692
// parseFlag it parses the log message formart into flag parts

log.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@
22
// go-aah/log source code and usage is governed by a MIT style
33
// license that can be found in the LICENSE file.
44

5-
// Package log implements a simple, flexible & powerful logger.
6-
// Currently it supports `console`, `file` (rotation by daily, size, lines),
7-
// logging receivers and logging stats. It also has a predefined 'standard'
8-
// Logger accessible through helper functions `Error{f}`, `Warn{f}`, `Info{f}`,
9-
// `Debug{f}`, `Trace{f}` which are easier to use than creating a Logger manually.
10-
// That logger writes to standard error and prints log `Entry` details
11-
// as per `DefaultPattern`.
5+
// Package log implements a simple, flexible, non-blocking logger.
6+
// It supports `console`, `file` (rotation by daily, size, lines).
7+
// It also has a predefined 'standard' Logger accessible through helper
8+
// functions `Error{f}`, `Warn{f}`, `Info{f}`, `Debug{f}`, `Trace{f}`,
9+
// `Print{f,ln}`, `Fatal{f,ln}`, `Panic{f,ln}` which are easier to use than creating
10+
// a Logger manually. Default logger writes to standard error and prints log
11+
// `Entry` details as per `DefaultPattern`.
1212
//
13-
// Note: aah log package is drop-in replacement for standard go logger with features.
13+
// aah log package can be used as drop-in replacement for standard go logger
14+
// with features.
1415
//
1516
// log.Info("Welcome ", "to ", "aah ", "logger")
16-
// log.Infof("%v, %v, & %v", "simple", "flexible", "powerful logger")
17+
// log.Infof("%v, %v, %v", "simple", "flexible", "non-blocking logger")
1718
//
1819
// // Output:
19-
// 2016-07-03 19:22:11.504 INFO - Welcome to aah logger
20-
// 2016-07-03 19:22:11.504 INFO - simple, flexible, & powerful logger
20+
// 2016-07-03 19:22:11.504 INFO Welcome to aah logger
21+
// 2016-07-03 19:22:11.504 INFO simple, flexible, non-blocking logger
2122
package log
2223

2324
import (
@@ -188,19 +189,17 @@ func (l *Logger) SetPattern(pattern string) error {
188189
if l.receiver == nil {
189190
return ErrLogReceiverIsNil
190191
}
191-
192-
l.m.Lock()
193-
defer l.m.Unlock()
194192
return l.receiver.SetPattern(pattern)
195193
}
196194

197195
// SetReceiver sets the given receiver into logger instance.
198196
func (l *Logger) SetReceiver(receiver Receiver) error {
197+
l.m.Lock()
198+
defer l.m.Unlock()
199+
199200
if receiver == nil {
200201
return ErrLogReceiverIsNil
201202
}
202-
l.m.Lock()
203-
defer l.m.Unlock()
204203

205204
l.receiver = receiver
206205
return l.receiver.Init(l.cfg)

util.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package log
77
import (
88
"runtime"
99
"strings"
10+
"sync"
1011
"time"
1112
)
1213

@@ -79,9 +80,9 @@ func isCallerInfo(flags *[]FlagPart) bool {
7980

8081
func getReceiverByName(name string) Receiver {
8182
if name == "FILE" {
82-
return &FileReceiver{}
83+
return &FileReceiver{rw: &sync.RWMutex{}}
8384
} else if name == "CONSOLE" {
84-
return &ConsoleReceiver{}
85+
return &ConsoleReceiver{rw: &sync.RWMutex{}}
8586
}
8687
return nil
8788
}

0 commit comments

Comments
 (0)