good morning!!!!
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
bor
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Harbor Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
open
bor
Commits
7f9c3354
Commit
7f9c3354
authored
Jan 21, 2015
by
Taylor Gerring
Browse files
Options
Downloads
Patches
Plain Diff
Split into multiple files
parent
87f50659
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
logger/loggers.go
+0
-122
0 additions, 122 deletions
logger/loggers.go
logger/logsystem.go
+31
-0
31 additions, 0 deletions
logger/logsystem.go
logger/sys.go
+99
-0
99 additions, 0 deletions
logger/sys.go
with
130 additions
and
122 deletions
logger/loggers.go
+
0
−
122
View file @
7f9c3354
...
@@ -14,11 +14,7 @@ package logger
...
@@ -14,11 +14,7 @@ package logger
import
(
import
(
"fmt"
"fmt"
"io"
"log"
"os"
"os"
"sync"
"sync/atomic"
)
)
// LogSystem is implemented by log output devices.
// LogSystem is implemented by log output devices.
...
@@ -46,100 +42,6 @@ const (
...
@@ -46,100 +42,6 @@ const (
DebugDetailLevel
DebugDetailLevel
)
)
var
(
logMessageC
=
make
(
chan
message
)
addSystemC
=
make
(
chan
LogSystem
)
flushC
=
make
(
chan
chan
struct
{})
resetC
=
make
(
chan
chan
struct
{})
)
func
init
()
{
go
dispatchLoop
()
}
// each system can buffer this many messages before
// blocking incoming log messages.
const
sysBufferSize
=
500
func
dispatchLoop
()
{
var
(
systems
[]
LogSystem
systemIn
[]
chan
message
systemWG
sync
.
WaitGroup
)
bootSystem
:=
func
(
sys
LogSystem
)
{
in
:=
make
(
chan
message
,
sysBufferSize
)
systemIn
=
append
(
systemIn
,
in
)
systemWG
.
Add
(
1
)
go
sysLoop
(
sys
,
in
,
&
systemWG
)
}
for
{
select
{
case
msg
:=
<-
logMessageC
:
for
_
,
c
:=
range
systemIn
{
c
<-
msg
}
case
sys
:=
<-
addSystemC
:
systems
=
append
(
systems
,
sys
)
bootSystem
(
sys
)
case
waiter
:=
<-
resetC
:
// reset means terminate all systems
for
_
,
c
:=
range
systemIn
{
close
(
c
)
}
systems
=
nil
systemIn
=
nil
systemWG
.
Wait
()
close
(
waiter
)
case
waiter
:=
<-
flushC
:
// flush means reboot all systems
for
_
,
c
:=
range
systemIn
{
close
(
c
)
}
systemIn
=
nil
systemWG
.
Wait
()
for
_
,
sys
:=
range
systems
{
bootSystem
(
sys
)
}
close
(
waiter
)
}
}
}
func
sysLoop
(
sys
LogSystem
,
in
<-
chan
message
,
wg
*
sync
.
WaitGroup
)
{
for
msg
:=
range
in
{
if
sys
.
GetLogLevel
()
>=
msg
.
level
{
sys
.
LogPrint
(
msg
.
level
,
msg
.
msg
)
}
}
wg
.
Done
()
}
// Reset removes all active log systems.
// It blocks until all current messages have been delivered.
func
Reset
()
{
waiter
:=
make
(
chan
struct
{})
resetC
<-
waiter
<-
waiter
}
// Flush waits until all current log messages have been dispatched to
// the active log systems.
func
Flush
()
{
waiter
:=
make
(
chan
struct
{})
flushC
<-
waiter
<-
waiter
}
// AddLogSystem starts printing messages to the given LogSystem.
func
AddLogSystem
(
sys
LogSystem
)
{
addSystemC
<-
sys
}
// A Logger prints messages prefixed by a given tag. It provides named
// A Logger prints messages prefixed by a given tag. It provides named
// Printf and Println style methods for all loglevels. Each ethereum
// Printf and Println style methods for all loglevels. Each ethereum
// component should have its own logger with a unique prefix.
// component should have its own logger with a unique prefix.
...
@@ -222,27 +124,3 @@ func (logger *Logger) Fatalf(format string, v ...interface{}) {
...
@@ -222,27 +124,3 @@ func (logger *Logger) Fatalf(format string, v ...interface{}) {
Flush
()
Flush
()
os
.
Exit
(
0
)
os
.
Exit
(
0
)
}
}
// NewStdLogSystem creates a LogSystem that prints to the given writer.
// The flag values are defined package log.
func
NewStdLogSystem
(
writer
io
.
Writer
,
flags
int
,
level
LogLevel
)
LogSystem
{
logger
:=
log
.
New
(
writer
,
""
,
flags
)
return
&
stdLogSystem
{
logger
,
uint32
(
level
)}
}
type
stdLogSystem
struct
{
logger
*
log
.
Logger
level
uint32
}
func
(
t
*
stdLogSystem
)
LogPrint
(
level
LogLevel
,
msg
string
)
{
t
.
logger
.
Print
(
msg
)
}
func
(
t
*
stdLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
atomic
.
StoreUint32
(
&
t
.
level
,
uint32
(
i
))
}
func
(
t
*
stdLogSystem
)
GetLogLevel
()
LogLevel
{
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
}
This diff is collapsed.
Click to expand it.
logger/logsystem.go
0 → 100644
+
31
−
0
View file @
7f9c3354
package
logger
import
(
"io"
"log"
"sync/atomic"
)
// NewStdLogSystem creates a LogSystem that prints to the given writer.
// The flag values are defined package log.
func
NewStdLogSystem
(
writer
io
.
Writer
,
flags
int
,
level
LogLevel
)
LogSystem
{
logger
:=
log
.
New
(
writer
,
""
,
flags
)
return
&
stdLogSystem
{
logger
,
uint32
(
level
)}
}
type
stdLogSystem
struct
{
logger
*
log
.
Logger
level
uint32
}
func
(
t
*
stdLogSystem
)
LogPrint
(
level
LogLevel
,
msg
string
)
{
t
.
logger
.
Print
(
msg
)
}
func
(
t
*
stdLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
atomic
.
StoreUint32
(
&
t
.
level
,
uint32
(
i
))
}
func
(
t
*
stdLogSystem
)
GetLogLevel
()
LogLevel
{
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
}
This diff is collapsed.
Click to expand it.
logger/sys.go
0 → 100644
+
99
−
0
View file @
7f9c3354
package
logger
import
(
"sync"
)
var
(
logMessageC
=
make
(
chan
message
)
addSystemC
=
make
(
chan
LogSystem
)
flushC
=
make
(
chan
chan
struct
{})
resetC
=
make
(
chan
chan
struct
{})
)
func
init
()
{
go
dispatchLoop
()
}
// each system can buffer this many messages before
// blocking incoming log messages.
const
sysBufferSize
=
500
func
dispatchLoop
()
{
var
(
systems
[]
LogSystem
systemIn
[]
chan
message
systemWG
sync
.
WaitGroup
)
bootSystem
:=
func
(
sys
LogSystem
)
{
in
:=
make
(
chan
message
,
sysBufferSize
)
systemIn
=
append
(
systemIn
,
in
)
systemWG
.
Add
(
1
)
go
sysLoop
(
sys
,
in
,
&
systemWG
)
}
for
{
select
{
case
msg
:=
<-
logMessageC
:
for
_
,
c
:=
range
systemIn
{
c
<-
msg
}
case
sys
:=
<-
addSystemC
:
systems
=
append
(
systems
,
sys
)
bootSystem
(
sys
)
case
waiter
:=
<-
resetC
:
// reset means terminate all systems
for
_
,
c
:=
range
systemIn
{
close
(
c
)
}
systems
=
nil
systemIn
=
nil
systemWG
.
Wait
()
close
(
waiter
)
case
waiter
:=
<-
flushC
:
// flush means reboot all systems
for
_
,
c
:=
range
systemIn
{
close
(
c
)
}
systemIn
=
nil
systemWG
.
Wait
()
for
_
,
sys
:=
range
systems
{
bootSystem
(
sys
)
}
close
(
waiter
)
}
}
}
func
sysLoop
(
sys
LogSystem
,
in
<-
chan
message
,
wg
*
sync
.
WaitGroup
)
{
for
msg
:=
range
in
{
if
sys
.
GetLogLevel
()
>=
msg
.
level
{
sys
.
LogPrint
(
msg
.
level
,
msg
.
msg
)
}
}
wg
.
Done
()
}
// Reset removes all active log systems.
// It blocks until all current messages have been delivered.
func
Reset
()
{
waiter
:=
make
(
chan
struct
{})
resetC
<-
waiter
<-
waiter
}
// Flush waits until all current log messages have been dispatched to
// the active log systems.
func
Flush
()
{
waiter
:=
make
(
chan
struct
{})
flushC
<-
waiter
<-
waiter
}
// AddLogSystem starts printing messages to the given LogSystem.
func
AddLogSystem
(
sys
LogSystem
)
{
addSystemC
<-
sys
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment