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
8b1b9fc9
Commit
8b1b9fc9
authored
Mar 22, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'jsonlog' of
https://github.com/ethersphere/go-ethereum
into ethersphere-jsonlog
Conflicts: eth/backend.go
parents
8ed4f226
0edb3356
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
105 additions
and
110 deletions
+105
-110
logger.go
blockpool/test/logger.go
+6
-12
main.go
cmd/ethereum/main.go
+1
-1
flags.go
cmd/utils/flags.go
+5
-5
backend.go
eth/backend.go
+21
-17
log.go
logger/log.go
+16
-8
loggers.go
logger/loggers.go
+3
-4
loggers_test.go
logger/loggers_test.go
+6
-4
logsystem.go
logger/logsystem.go
+17
-44
sys.go
logger/sys.go
+30
-15
No files found.
blockpool/test/logger.go
View file @
8b1b9fc9
...
@@ -21,8 +21,7 @@ func TestFunc(t *testing.T) {
...
@@ -21,8 +21,7 @@ func TestFunc(t *testing.T) {
*/
*/
func
LogInit
()
{
func
LogInit
()
{
once
.
Do
(
func
()
{
once
.
Do
(
func
()
{
var
logsys
=
logger
.
NewStdLogSystem
(
os
.
Stdout
,
log
.
LstdFlags
,
logger
.
LogLevel
(
logger
.
WarnLevel
))
logger
.
NewStdLogSystem
(
os
.
Stdout
,
log
.
LstdFlags
,
logger
.
LogLevel
(
logger
.
DebugDetailLevel
))
logger
.
AddLogSystem
(
logsys
)
})
})
}
}
...
@@ -41,11 +40,8 @@ func Testlog(t *testing.T) testLogger {
...
@@ -41,11 +40,8 @@ func Testlog(t *testing.T) testLogger {
return
l
return
l
}
}
func
(
testLogger
)
GetLogLevel
()
logger
.
LogLevel
{
return
logger
.
DebugLevel
}
func
(
l
testLogger
)
LogPrint
(
msg
logger
.
LogMsg
)
{
func
(
testLogger
)
SetLogLevel
(
logger
.
LogLevel
)
{}
l
.
t
.
Log
(
msg
.
String
())
func
(
l
testLogger
)
LogPrint
(
level
logger
.
LogLevel
,
msg
string
)
{
l
.
t
.
Logf
(
"%s"
,
msg
)
}
}
func
(
testLogger
)
Detach
()
{
func
(
testLogger
)
Detach
()
{
...
@@ -68,12 +64,10 @@ func Benchlog(b *testing.B) benchLogger {
...
@@ -68,12 +64,10 @@ func Benchlog(b *testing.B) benchLogger {
return
l
return
l
}
}
func
(
benchLogger
)
GetLogLevel
()
logger
.
LogLevel
{
return
logger
.
Silence
}
func
(
l
benchLogger
)
LogPrint
(
msg
logger
.
LogMsg
)
{
l
.
b
.
Log
(
msg
.
String
())
func
(
benchLogger
)
SetLogLevel
(
logger
.
LogLevel
)
{}
func
(
l
benchLogger
)
LogPrint
(
level
logger
.
LogLevel
,
msg
string
)
{
l
.
b
.
Logf
(
"%s"
,
msg
)
}
}
func
(
benchLogger
)
Detach
()
{
func
(
benchLogger
)
Detach
()
{
logger
.
Flush
()
logger
.
Flush
()
logger
.
Reset
()
logger
.
Reset
()
...
...
cmd/ethereum/main.go
View file @
8b1b9fc9
...
@@ -135,7 +135,7 @@ The Ethereum JavaScript VM exposes a node admin interface as well as the DAPP Ja
...
@@ -135,7 +135,7 @@ The Ethereum JavaScript VM exposes a node admin interface as well as the DAPP Ja
utils
.
JSpathFlag
,
utils
.
JSpathFlag
,
utils
.
ListenPortFlag
,
utils
.
ListenPortFlag
,
utils
.
LogFileFlag
,
utils
.
LogFileFlag
,
utils
.
Log
Format
Flag
,
utils
.
Log
JSON
Flag
,
utils
.
LogLevelFlag
,
utils
.
LogLevelFlag
,
utils
.
MaxPeersFlag
,
utils
.
MaxPeersFlag
,
utils
.
MinerThreadsFlag
,
utils
.
MinerThreadsFlag
,
...
...
cmd/utils/flags.go
View file @
8b1b9fc9
...
@@ -117,10 +117,10 @@ var (
...
@@ -117,10 +117,10 @@ var (
Usage
:
"0-5 (silent, error, warn, info, debug, debug detail)"
,
Usage
:
"0-5 (silent, error, warn, info, debug, debug detail)"
,
Value
:
int
(
logger
.
InfoLevel
),
Value
:
int
(
logger
.
InfoLevel
),
}
}
Log
Format
Flag
=
cli
.
StringFlag
{
Log
JSON
Flag
=
cli
.
StringFlag
{
Name
:
"log
format
"
,
Name
:
"log
json
"
,
Usage
:
`"std" or "raw"`
,
Usage
:
"Send json structured log output to a file or '-' for standard output (default: no json output)"
,
Value
:
"
std
"
,
Value
:
""
,
}
}
VMDebugFlag
=
cli
.
BoolFlag
{
VMDebugFlag
=
cli
.
BoolFlag
{
Name
:
"vmdebug"
,
Name
:
"vmdebug"
,
...
@@ -213,7 +213,7 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
...
@@ -213,7 +213,7 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
NetworkId
:
ctx
.
GlobalInt
(
NetworkIdFlag
.
Name
),
NetworkId
:
ctx
.
GlobalInt
(
NetworkIdFlag
.
Name
),
LogFile
:
ctx
.
GlobalString
(
LogFileFlag
.
Name
),
LogFile
:
ctx
.
GlobalString
(
LogFileFlag
.
Name
),
LogLevel
:
ctx
.
GlobalInt
(
LogLevelFlag
.
Name
),
LogLevel
:
ctx
.
GlobalInt
(
LogLevelFlag
.
Name
),
Log
Format
:
ctx
.
GlobalString
(
LogFormat
Flag
.
Name
),
Log
JSON
:
ctx
.
GlobalString
(
LogJSON
Flag
.
Name
),
MinerThreads
:
ctx
.
GlobalInt
(
MinerThreadsFlag
.
Name
),
MinerThreads
:
ctx
.
GlobalInt
(
MinerThreadsFlag
.
Name
),
AccountManager
:
GetAccountManager
(
ctx
),
AccountManager
:
GetAccountManager
(
ctx
),
VmDebug
:
ctx
.
GlobalBool
(
VMDebugFlag
.
Name
),
VmDebug
:
ctx
.
GlobalBool
(
VMDebugFlag
.
Name
),
...
...
eth/backend.go
View file @
8b1b9fc9
...
@@ -42,11 +42,11 @@ type Config struct {
...
@@ -42,11 +42,11 @@ type Config struct {
ProtocolVersion
int
ProtocolVersion
int
NetworkId
int
NetworkId
int
DataDir
string
DataDir
string
LogFile
string
LogFile
string
LogLevel
int
LogLevel
int
Log
Format
string
Log
JSON
string
VmDebug
bool
VmDebug
bool
MaxPeers
int
MaxPeers
int
Port
string
Port
string
...
@@ -136,7 +136,7 @@ type Ethereum struct {
...
@@ -136,7 +136,7 @@ type Ethereum struct {
blockSub
event
.
Subscription
blockSub
event
.
Subscription
miner
*
miner
.
Miner
miner
*
miner
.
Miner
logger
logger
.
LogSystem
//
logger logger.LogSystem
Mining
bool
Mining
bool
DataDir
string
DataDir
string
...
@@ -147,7 +147,10 @@ type Ethereum struct {
...
@@ -147,7 +147,10 @@ type Ethereum struct {
func
New
(
config
*
Config
)
(
*
Ethereum
,
error
)
{
func
New
(
config
*
Config
)
(
*
Ethereum
,
error
)
{
// Boostrap database
// Boostrap database
servlogsystem
:=
logger
.
New
(
config
.
DataDir
,
config
.
LogFile
,
config
.
LogLevel
,
config
.
LogFormat
)
logger
.
New
(
config
.
DataDir
,
config
.
LogFile
,
config
.
LogLevel
)
if
len
(
config
.
LogJSON
)
>
0
{
logger
.
NewJSONsystem
(
config
.
DataDir
,
config
.
LogJSON
)
}
newdb
:=
config
.
NewDB
newdb
:=
config
.
NewDB
if
newdb
==
nil
{
if
newdb
==
nil
{
...
@@ -174,12 +177,12 @@ func New(config *Config) (*Ethereum, error) {
...
@@ -174,12 +177,12 @@ func New(config *Config) (*Ethereum, error) {
servlogger
.
Infof
(
"Protocol Version: %v, Network Id: %v"
,
config
.
ProtocolVersion
,
config
.
NetworkId
)
servlogger
.
Infof
(
"Protocol Version: %v, Network Id: %v"
,
config
.
ProtocolVersion
,
config
.
NetworkId
)
eth
:=
&
Ethereum
{
eth
:=
&
Ethereum
{
shutdownChan
:
make
(
chan
bool
),
shutdownChan
:
make
(
chan
bool
),
blockDb
:
blockDb
,
blockDb
:
blockDb
,
stateDb
:
stateDb
,
stateDb
:
stateDb
,
extraDb
:
extraDb
,
extraDb
:
extraDb
,
eventMux
:
&
event
.
TypeMux
{},
eventMux
:
&
event
.
TypeMux
{},
logger
:
servlogsystem
,
//
logger: servlogsystem,
accountManager
:
config
.
AccountManager
,
accountManager
:
config
.
AccountManager
,
DataDir
:
config
.
DataDir
,
DataDir
:
config
.
DataDir
,
version
:
config
.
Name
,
// TODO should separate from Name
version
:
config
.
Name
,
// TODO should separate from Name
...
@@ -300,10 +303,11 @@ func (s *Ethereum) StartMining() error {
...
@@ -300,10 +303,11 @@ func (s *Ethereum) StartMining() error {
return
nil
return
nil
}
}
func
(
s
*
Ethereum
)
StopMining
()
{
s
.
miner
.
Stop
()
}
func
(
s
*
Ethereum
)
StopMining
()
{
s
.
miner
.
Stop
()
}
func
(
s
*
Ethereum
)
IsMining
()
bool
{
return
s
.
miner
.
Mining
()
}
func
(
s
*
Ethereum
)
IsMining
()
bool
{
return
s
.
miner
.
Mining
()
}
func
(
s
*
Ethereum
)
Miner
()
*
miner
.
Miner
{
return
s
.
miner
}
func
(
s
*
Ethereum
)
Miner
()
*
miner
.
Miner
{
return
s
.
miner
}
func
(
s
*
Ethereum
)
Logger
()
logger
.
LogSystem
{
return
s
.
logger
}
// func (s *Ethereum) Logger() logger.LogSystem { return s.logger }
func
(
s
*
Ethereum
)
Name
()
string
{
return
s
.
net
.
Name
}
func
(
s
*
Ethereum
)
Name
()
string
{
return
s
.
net
.
Name
}
func
(
s
*
Ethereum
)
AccountManager
()
*
accounts
.
Manager
{
return
s
.
accountManager
}
func
(
s
*
Ethereum
)
AccountManager
()
*
accounts
.
Manager
{
return
s
.
accountManager
}
func
(
s
*
Ethereum
)
ChainManager
()
*
core
.
ChainManager
{
return
s
.
chainManager
}
func
(
s
*
Ethereum
)
ChainManager
()
*
core
.
ChainManager
{
return
s
.
chainManager
}
...
...
logger/log.go
View file @
8b1b9fc9
...
@@ -18,7 +18,7 @@ func openLogFile(datadir string, filename string) *os.File {
...
@@ -18,7 +18,7 @@ func openLogFile(datadir string, filename string) *os.File {
return
file
return
file
}
}
func
New
(
datadir
string
,
logFile
string
,
logLevel
int
,
logFormat
string
)
LogSystem
{
func
New
(
datadir
string
,
logFile
string
,
logLevel
int
)
LogSystem
{
var
writer
io
.
Writer
var
writer
io
.
Writer
if
logFile
==
""
{
if
logFile
==
""
{
writer
=
os
.
Stdout
writer
=
os
.
Stdout
...
@@ -27,14 +27,22 @@ func New(datadir string, logFile string, logLevel int, logFormat string) LogSyst
...
@@ -27,14 +27,22 @@ func New(datadir string, logFile string, logLevel int, logFormat string) LogSyst
}
}
var
sys
LogSystem
var
sys
LogSystem
switch
logFormat
{
sys
=
NewStdLogSystem
(
writer
,
log
.
LstdFlags
,
LogLevel
(
logLevel
))
case
"raw"
:
AddLogSystem
(
sys
)
sys
=
NewRawLogSystem
(
writer
,
0
,
LogLevel
(
logLevel
))
case
"json"
:
return
sys
sys
=
NewJsonLogSystem
(
writer
,
0
,
LogLevel
(
logLevel
))
}
default
:
sys
=
NewStdLogSystem
(
writer
,
log
.
LstdFlags
,
LogLevel
(
logLevel
))
func
NewJSONsystem
(
datadir
string
,
logFile
string
)
LogSystem
{
var
writer
io
.
Writer
if
logFile
==
"-"
{
writer
=
os
.
Stdout
}
else
{
writer
=
openLogFile
(
datadir
,
logFile
)
}
}
var
sys
LogSystem
sys
=
NewJsonLogSystem
(
writer
)
AddLogSystem
(
sys
)
AddLogSystem
(
sys
)
return
sys
return
sys
...
...
logger/loggers.go
View file @
8b1b9fc9
...
@@ -28,7 +28,6 @@ const (
...
@@ -28,7 +28,6 @@ const (
InfoLevel
InfoLevel
DebugLevel
DebugLevel
DebugDetailLevel
DebugDetailLevel
JsonLevel
=
1000
)
)
// A Logger prints messages prefixed by a given tag. It provides named
// A Logger prints messages prefixed by a given tag. It provides named
...
@@ -43,11 +42,11 @@ func NewLogger(tag string) *Logger {
...
@@ -43,11 +42,11 @@ func NewLogger(tag string) *Logger {
}
}
func
(
logger
*
Logger
)
Sendln
(
level
LogLevel
,
v
...
interface
{})
{
func
(
logger
*
Logger
)
Sendln
(
level
LogLevel
,
v
...
interface
{})
{
logMessageC
<-
message
{
level
,
logger
.
tag
+
fmt
.
Sprintln
(
v
...
)}
logMessageC
<-
stdMsg
{
level
,
logger
.
tag
+
fmt
.
Sprintln
(
v
...
)}
}
}
func
(
logger
*
Logger
)
Sendf
(
level
LogLevel
,
format
string
,
v
...
interface
{})
{
func
(
logger
*
Logger
)
Sendf
(
level
LogLevel
,
format
string
,
v
...
interface
{})
{
logMessageC
<-
message
{
level
,
logger
.
tag
+
fmt
.
Sprintf
(
format
,
v
...
)}
logMessageC
<-
stdMsg
{
level
,
logger
.
tag
+
fmt
.
Sprintf
(
format
,
v
...
)}
}
}
// Errorln writes a message with ErrorLevel.
// Errorln writes a message with ErrorLevel.
...
@@ -129,6 +128,6 @@ func (logger *JsonLogger) LogJson(v JsonLog) {
...
@@ -129,6 +128,6 @@ func (logger *JsonLogger) LogJson(v JsonLog) {
}
}
jsontxt
,
_
:=
json
.
Marshal
(
obj
)
jsontxt
,
_
:=
json
.
Marshal
(
obj
)
logMessageC
<-
message
{
JsonLevel
,
string
(
jsontxt
)}
logMessageC
<-
(
jsonMsg
(
jsontxt
))
}
}
logger/loggers_test.go
View file @
8b1b9fc9
...
@@ -15,9 +15,11 @@ type TestLogSystem struct {
...
@@ -15,9 +15,11 @@ type TestLogSystem struct {
level
LogLevel
level
LogLevel
}
}
func
(
ls
*
TestLogSystem
)
LogPrint
(
level
LogLevel
,
msg
strin
g
)
{
func
(
ls
*
TestLogSystem
)
LogPrint
(
msg
LogMs
g
)
{
ls
.
mutex
.
Lock
()
ls
.
mutex
.
Lock
()
ls
.
output
+=
msg
if
ls
.
level
>=
msg
.
Level
()
{
ls
.
output
+=
msg
.
String
()
}
ls
.
mutex
.
Unlock
()
ls
.
mutex
.
Unlock
()
}
}
...
@@ -47,9 +49,9 @@ type blockedLogSystem struct {
...
@@ -47,9 +49,9 @@ type blockedLogSystem struct {
unblock
chan
struct
{}
unblock
chan
struct
{}
}
}
func
(
ls
blockedLogSystem
)
LogPrint
(
level
LogLevel
,
msg
strin
g
)
{
func
(
ls
blockedLogSystem
)
LogPrint
(
msg
LogMs
g
)
{
<-
ls
.
unblock
<-
ls
.
unblock
ls
.
LogSystem
.
LogPrint
(
level
,
msg
)
ls
.
LogSystem
.
LogPrint
(
msg
)
}
}
func
TestLoggerFlush
(
t
*
testing
.
T
)
{
func
TestLoggerFlush
(
t
*
testing
.
T
)
{
...
...
logger/logsystem.go
View file @
8b1b9fc9
...
@@ -9,9 +9,7 @@ import (
...
@@ -9,9 +9,7 @@ import (
// LogSystem is implemented by log output devices.
// LogSystem is implemented by log output devices.
// All methods can be called concurrently from multiple goroutines.
// All methods can be called concurrently from multiple goroutines.
type
LogSystem
interface
{
type
LogSystem
interface
{
GetLogLevel
()
LogLevel
LogPrint
(
LogMsg
)
SetLogLevel
(
i
LogLevel
)
LogPrint
(
LogLevel
,
string
)
}
}
// NewStdLogSystem creates a LogSystem that prints to the given writer.
// NewStdLogSystem creates a LogSystem that prints to the given writer.
...
@@ -26,8 +24,13 @@ type stdLogSystem struct {
...
@@ -26,8 +24,13 @@ type stdLogSystem struct {
level
uint32
level
uint32
}
}
func
(
t
*
stdLogSystem
)
LogPrint
(
level
LogLevel
,
msg
string
)
{
func
(
t
*
stdLogSystem
)
LogPrint
(
msg
LogMsg
)
{
t
.
logger
.
Print
(
msg
)
stdmsg
,
ok
:=
msg
.
(
stdMsg
)
if
ok
{
if
t
.
GetLogLevel
()
>=
stdmsg
.
Level
()
{
t
.
logger
.
Print
(
stdmsg
.
String
())
}
}
}
}
func
(
t
*
stdLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
func
(
t
*
stdLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
...
@@ -38,50 +41,20 @@ func (t *stdLogSystem) GetLogLevel() LogLevel {
...
@@ -38,50 +41,20 @@ func (t *stdLogSystem) GetLogLevel() LogLevel {
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
}
}
// New
Raw
LogSystem creates a LogSystem that prints to the given writer without
// New
JSON
LogSystem creates a LogSystem that prints to the given writer without
// adding extra information
. Suitable for preformatted output
// adding extra information
irrespective of loglevel only if message is JSON type
func
New
RawLogSystem
(
writer
io
.
Writer
,
flags
int
,
level
LogLevel
)
LogSystem
{
func
New
JsonLogSystem
(
writer
io
.
Writer
)
LogSystem
{
logger
:=
log
.
New
(
writer
,
""
,
0
)
logger
:=
log
.
New
(
writer
,
""
,
0
)
return
&
rawLogSystem
{
logger
,
uint32
(
level
)}
return
&
jsonLogSystem
{
logger
}
}
type
rawLogSystem
struct
{
logger
*
log
.
Logger
level
uint32
}
func
(
t
*
rawLogSystem
)
LogPrint
(
level
LogLevel
,
msg
string
)
{
t
.
logger
.
Print
(
msg
)
}
func
(
t
*
rawLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
atomic
.
StoreUint32
(
&
t
.
level
,
uint32
(
i
))
}
func
(
t
*
rawLogSystem
)
GetLogLevel
()
LogLevel
{
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
}
// NewRawLogSystem creates a LogSystem that prints to the given writer without
// adding extra information. Suitable for preformatted output
func
NewJsonLogSystem
(
writer
io
.
Writer
,
flags
int
,
level
LogLevel
)
LogSystem
{
logger
:=
log
.
New
(
writer
,
""
,
0
)
return
&
jsonLogSystem
{
logger
,
uint32
(
level
)}
}
}
type
jsonLogSystem
struct
{
type
jsonLogSystem
struct
{
logger
*
log
.
Logger
logger
*
log
.
Logger
level
uint32
}
}
func
(
t
*
jsonLogSystem
)
LogPrint
(
level
LogLevel
,
msg
string
)
{
func
(
t
*
jsonLogSystem
)
LogPrint
(
msg
LogMsg
)
{
t
.
logger
.
Print
(
msg
)
jsonmsg
,
ok
:=
msg
.
(
jsonMsg
)
}
if
ok
{
t
.
logger
.
Print
(
jsonmsg
.
String
())
func
(
t
*
jsonLogSystem
)
SetLogLevel
(
i
LogLevel
)
{
}
atomic
.
StoreUint32
(
&
t
.
level
,
uint32
(
i
))
}
func
(
t
*
jsonLogSystem
)
GetLogLevel
()
LogLevel
{
return
LogLevel
(
atomic
.
LoadUint32
(
&
t
.
level
))
}
}
logger/sys.go
View file @
8b1b9fc9
package
logger
package
logger
import
(
import
(
"fmt"
"sync"
"sync"
)
)
type
message
struct
{
type
stdMsg
struct
{
level
LogLevel
level
LogLevel
msg
string
msg
string
}
}
type
jsonMsg
[]
byte
func
(
m
jsonMsg
)
Level
()
LogLevel
{
return
0
}
func
(
m
jsonMsg
)
String
()
string
{
return
string
(
m
)
}
type
LogMsg
interface
{
Level
()
LogLevel
fmt
.
Stringer
}
func
(
m
stdMsg
)
Level
()
LogLevel
{
return
m
.
level
}
func
(
m
stdMsg
)
String
()
string
{
return
m
.
msg
}
var
(
var
(
logMessageC
=
make
(
chan
message
)
logMessageC
=
make
(
chan
LogMsg
)
addSystemC
=
make
(
chan
LogSystem
)
addSystemC
=
make
(
chan
LogSystem
)
flushC
=
make
(
chan
chan
struct
{})
flushC
=
make
(
chan
chan
struct
{})
resetC
=
make
(
chan
chan
struct
{})
resetC
=
make
(
chan
chan
struct
{})
...
@@ -27,11 +51,11 @@ const sysBufferSize = 500
...
@@ -27,11 +51,11 @@ const sysBufferSize = 500
func
dispatchLoop
()
{
func
dispatchLoop
()
{
var
(
var
(
systems
[]
LogSystem
systems
[]
LogSystem
systemIn
[]
chan
message
systemIn
[]
chan
LogMsg
systemWG
sync
.
WaitGroup
systemWG
sync
.
WaitGroup
)
)
bootSystem
:=
func
(
sys
LogSystem
)
{
bootSystem
:=
func
(
sys
LogSystem
)
{
in
:=
make
(
chan
message
,
sysBufferSize
)
in
:=
make
(
chan
LogMsg
,
sysBufferSize
)
systemIn
=
append
(
systemIn
,
in
)
systemIn
=
append
(
systemIn
,
in
)
systemWG
.
Add
(
1
)
systemWG
.
Add
(
1
)
go
sysLoop
(
sys
,
in
,
&
systemWG
)
go
sysLoop
(
sys
,
in
,
&
systemWG
)
...
@@ -73,18 +97,9 @@ func dispatchLoop() {
...
@@ -73,18 +97,9 @@ func dispatchLoop() {
}
}
}
}
func
sysLoop
(
sys
LogSystem
,
in
<-
chan
message
,
wg
*
sync
.
WaitGroup
)
{
func
sysLoop
(
sys
LogSystem
,
in
<-
chan
LogMsg
,
wg
*
sync
.
WaitGroup
)
{
for
msg
:=
range
in
{
for
msg
:=
range
in
{
switch
sys
.
(
type
)
{
sys
.
LogPrint
(
msg
)
case
*
jsonLogSystem
:
if
msg
.
level
==
JsonLevel
{
sys
.
LogPrint
(
msg
.
level
,
msg
.
msg
)
}
default
:
if
sys
.
GetLogLevel
()
>=
msg
.
level
{
sys
.
LogPrint
(
msg
.
level
,
msg
.
msg
)
}
}
}
}
wg
.
Done
()
wg
.
Done
()
}
}
...
...
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