Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
7f9c3354
Commit
7f9c3354
authored
Jan 21, 2015
by
Taylor Gerring
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Split into multiple files
parent
87f50659
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
130 additions
and
122 deletions
+130
-122
loggers.go
logger/loggers.go
+0
-122
logsystem.go
logger/logsystem.go
+31
-0
sys.go
logger/sys.go
+99
-0
No files found.
logger/loggers.go
View file @
7f9c3354
...
...
@@ -14,11 +14,7 @@ package logger
import
(
"fmt"
"io"
"log"
"os"
"sync"
"sync/atomic"
)
// LogSystem is implemented by log output devices.
...
...
@@ -46,100 +42,6 @@ const (
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
// Printf and Println style methods for all loglevels. Each ethereum
// component should have its own logger with a unique prefix.
...
...
@@ -222,27 +124,3 @@ func (logger *Logger) Fatalf(format string, v ...interface{}) {
Flush
()
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
))
}
logger/logsystem.go
0 → 100644
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
))
}
logger/sys.go
0 → 100644
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
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment