Skip to content

Commit 3247176

Browse files
mix the things
1 parent 8bcbc98 commit 3247176

File tree

2 files changed

+50
-10
lines changed

2 files changed

+50
-10
lines changed

jlog/lib.go

+49-9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ var safeStderr = writer.NewSafeWriter(os.Stderr)
4848

4949
var lockStack = stack.NewStack()
5050

51+
type FileLevel struct {
52+
Level LogLevel
53+
File *os.File
54+
Tags *map[string]interface{}
55+
lock *sync.Mutex
56+
}
57+
5158
type Logger struct {
5259
AppName string
5360
IsLoggingJSON bool
@@ -59,7 +66,7 @@ type Logger struct {
5966
LockUuid string
6067
EnvPrefix string
6168
LogLevel LogLevel
62-
Files []*os.File
69+
Files []*FileLevel
6370
}
6471

6572
type LoggerParams struct {
@@ -73,19 +80,49 @@ type LoggerParams struct {
7380
LockUuid string
7481
EnvPrefix string
7582
LogLevel LogLevel
76-
Files []*os.File
83+
Files []*FileLevel
84+
}
85+
86+
func mapFileLevels(x []*FileLevel) []*FileLevel {
87+
88+
var results = []*FileLevel{}
89+
var m = map[uintptr]*sync.Mutex{}
90+
91+
for _, z := range x {
92+
93+
if _, ok := m[z.File.Fd()]; !ok {
94+
m[z.File.Fd()] = &sync.Mutex{}
95+
}
96+
97+
x, _ := m[z.File.Fd()]
98+
99+
z := &FileLevel{
100+
Level: z.Level,
101+
File: z.File,
102+
Tags: z.Tags,
103+
lock: x,
104+
}
105+
results = append(results, z)
106+
}
107+
108+
return results
77109
}
78110

79111
func NewLogger(p LoggerParams) *Logger {
80112

81-
var files = []*os.File{}
113+
var files = []*FileLevel{}
82114

83115
if p.Files != nil {
84-
files = p.Files[:]
116+
files = mapFileLevels(p.Files)
85117
}
86118

87119
if len(files) < 1 {
88-
files = append(files, os.Stdout)
120+
files = append(files, &FileLevel{
121+
Level: TRACE,
122+
File: os.Stdout,
123+
Tags: nil,
124+
lock: nil,
125+
})
89126
}
90127

91128
hostName := p.HostName
@@ -160,7 +197,7 @@ func NewLogger(p LoggerParams) *Logger {
160197
}
161198
}
162199

163-
func isSameFile(fd1, fd2 uintptr) (bool, error) {
200+
func isSameFile(fd1 uintptr, fd2 uintptr) (bool, error) {
164201
var stat1, stat2 syscall.Stat_t
165202
if err := syscall.Fstat(int(fd1), &stat1); err != nil {
166203
return false, err
@@ -184,7 +221,7 @@ func checkIfSameFile() {
184221
}
185222
}
186223

187-
func NewBasicLogger(AppName string, envTokenPrefix string, level LogLevel, files ...*os.File) *Logger {
224+
func NewBasicLogger(AppName string, envTokenPrefix string, level LogLevel, files ...*FileLevel) *Logger {
188225
return NewLogger(LoggerParams{
189226
AppName: AppName,
190227
EnvPrefix: envTokenPrefix,
@@ -193,7 +230,7 @@ func NewBasicLogger(AppName string, envTokenPrefix string, level LogLevel, files
193230
})
194231
}
195232

196-
func New(AppName string, envTokenPrefix string, level LogLevel, files []*os.File) *Logger {
233+
func New(AppName string, envTokenPrefix string, level LogLevel, files []*FileLevel) *Logger {
197234
return NewLogger(LoggerParams{
198235
AppName: AppName,
199236
EnvPrefix: envTokenPrefix,
@@ -930,7 +967,10 @@ var DefaultLogger = New(
930967
"Default",
931968
"",
932969
TRACE,
933-
[]*os.File{os.Stdout},
970+
[]*FileLevel{&FileLevel{
971+
Level: TRACE,
972+
File: os.Stdout,
973+
}},
934974
)
935975

936976
func init() {

link.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
set -eo pipefail
44

5-
cd "$(dirname "$BASH_SOURCE")";
5+
cd "$(dirname "${BASH_SOURCE}")";
66

77

88
if [[ ! -f 'readme.md' ]]; then

0 commit comments

Comments
 (0)