本文整理汇总了Golang中gopkg/in/inconshreveable/log15/v2.Logger.New方法的典型用法代码示例。如果您正苦于以下问题:Golang Logger.New方法的具体用法?Golang Logger.New怎么用?Golang Logger.New使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gopkg/in/inconshreveable/log15/v2.Logger
的用法示例。
在下文中一共展示了Logger.New方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: exec
func (lua *LuaExt) exec(reqLogger log.Logger, app *LuaApp, appID, reqId, script string, w http.ResponseWriter, r *http.Request) int {
// FIXME(tsileo) a debug mode, with a defer/recover
// also parse the Lu error and show the bugging line!
start := time.Now()
httpClient := &http.Client{}
// Initialize internal Lua module written in Go
logger := loggerModule.New(reqLogger.New("ctx", "Lua"), start, reqId)
response := responseModule.New()
request := requestModule.New(r, reqId, lua.authFunc)
blobstore := blobstoreModule.New(lua.blobStore)
kvstore := kvstoreModule.New(lua.kvStore)
bewit := bewitModule.New(reqLogger.New("ctx", "Lua bewit module"), r)
template := templateModule.New()
// Initialize Lua state
L := luamod.NewState()
defer L.Close()
setCustomGlobals(L)
L.PreloadModule("request", request.Loader)
L.PreloadModule("response", response.Loader)
L.PreloadModule("logger", logger.Loader)
L.PreloadModule("blobstore", blobstore.Loader)
L.PreloadModule("kvstore", kvstore.Loader)
L.PreloadModule("bewit", bewit.Loader)
L.PreloadModule("template", template.Loader)
// TODO(tsileo) docstore module
// TODO(tsileo) cookies module
// TODO(tsileo) lru module
// TODO(tsileo) cache module => to cache response
// TODO(tsileo) load module from github directly?
// TODO(tsileo) ETag support
// 3rd party module
luajson.Preload(L)
L.PreloadModule("http", gluahttp.NewHttpModule(httpClient).Loader)
// Set some global variables
L.SetGlobal("reqID", luamod.LString(reqId))
L.SetGlobal("appID", luamod.LString(appID))
// Execute the code
if err := L.DoString(script); err != nil {
// FIXME better error, with debug mode?
panic(err)
}
// Apply the Response object to the actual response
response.WriteTo(w)
// TODO save the logRecords in the AppStats and find a way to serve them over Server-Sent Events
// keep them in memory with the ability to dump them in bulk as blob for later query
// logRecords := logger.Records()
for _, logRecord := range logger.Records() {
app.logs = append(app.logs, logRecord)
}
reqLogger.Info("Script executed", "response", response, "duration", time.Since(start))
return response.Status()
}
示例2: matchQuery
// matchQuery takes a MongoDB-like query object and returns wether or not
// the given document match the query.
// The document will be flattened before the checks, to handle the dot-notation.
func matchQuery(qLogger log.Logger, query, odoc map[string]interface{}) bool {
logger := qLogger.New("subquery", query, "doc", odoc)
ok := true
// Flatten the map to handle dot-notation handling
doc := flattenMap(odoc, "", ".")
for key, eval := range query {
switch key {
case "$or":
res := false
for _, iexpr := range eval.([]interface{}) {
expr := iexpr.(map[string]interface{})
res = res || matchQuery(qLogger, expr, doc)
}
if !res {
ok = false
}
case "$and":
res := true
for _, iexpr := range eval.([]interface{}) {
expr := iexpr.(map[string]interface{})
res = res && matchQuery(qLogger, expr, doc)
}
ok = res
default:
// TODO(ts) make this part cleaner
// (check orignal doc VS flattend doc)
val, check := doc[key]
oval, err := getPath(key, odoc)
if !check && err != nil {
logger.Debug("key not found")
return false
}
// `val` (the value of the queried doc) must be:
// - a standard type: nil, int, float64, string, bool
// - a []interface[}
// It can't ba `map[string]interface{}` since maps are flattened
switch vval := oval.(type) {
// If it's an array, the doc is returned if a lest one of the doc match the query
case []interface{}:
res := false
for _, li := range vval {
res = res || matchQueryValue(eval, li)
}
if res {
ok = ok && true
}
default:
ok = ok && matchQueryValue(eval, val)
}
}
// logger.Debug("subquery res", "ok", ok, "key", key, "eval", eval)
}
return ok
}
示例3: NewProxy
func NewProxy(c net.Conn, root log.Logger) *Proxy {
logger := root.New(
"remoteAddr", c.RemoteAddr(),
"localAddr", c.LocalAddr(),
)
ret := &Proxy{
remoteConn: c,
logger: logger,
errChan: make(chan struct{}),
}
return ret
}
示例4: LogForRequest
func LogForRequest(l log.Logger, r *http.Request) log.Logger {
ctx := log.Ctx{
"method": r.Method,
"host": r.Host,
"url": r.URL,
"requesturi": r.RequestURI,
"remote": r.RemoteAddr,
"proto": r.Proto,
// "header": r.Header,
}
if val, ok := r.Header["X-Forwarded-For"]; ok {
ctx["x_forward_for"] = val
}
if val, ok := r.Header["X-Authenticated-User"]; ok {
ctx["x_authenticate_user"] = val
}
return l.New(ctx)
}
示例5: newMailer
func newMailer(conf ini.File, logger log.Logger) (Mailer, error) {
mailConf := conf.Section("mail")
if len(mailConf) == 0 {
return nil, nil
}
smtpAddr, ok := mailConf["smtp_server"]
if !ok {
return nil, errors.New("Missing mail -- smtp_server")
}
smtpPort, _ := mailConf["port"]
if smtpPort == "" {
smtpPort = "587"
}
fromAddr, ok := mailConf["from_address"]
if !ok {
return nil, errors.New("Missing mail -- from_address")
}
rootURL, ok := mailConf["root_url"]
if !ok {
return nil, errors.New("Missing mail -- root_url")
}
username, _ := mailConf["username"]
password, _ := mailConf["password"]
auth := smtp.PlainAuth("", username, password, smtpAddr)
logger = logger.New("module", "mail")
mailer := &SMTPMailer{
ServerAddr: smtpAddr + ":" + smtpPort,
Auth: auth,
From: fromAddr,
rootURL: rootURL,
logger: logger,
}
return mailer, nil
}
示例6: newRouter
func newRouter(fallback ldap.Backend, logger log.Logger) *ldap.RouteMux {
defaults := &DefaultsBackend{
Log: logger.New(log.Ctx{"type": "backend", "backend": "defaults"}),
}
//Create routes bindings
routes := ldap.NewRouteMux(logger)
// buildins
routes.Search(defaults).
BaseDn("").
Scope(ldap.SearchRequestScopeBaseObject).
Filter("(objectclass=*)").
Label("Search - ROOT DSE")
routes.Search(defaults).
BaseDn("o=Pronoc, c=Net").
Scope(ldap.SearchRequestScopeBaseObject).
Label("Search - Company Root")
routes.Extended(defaults).
RequestName(ldap.NoticeOfStartTLS).Label("StartTLS")
//default routes
routes.NotFound(fallback)
routes.Abandon(fallback)
routes.Compare(fallback)
routes.Delete(fallback)
routes.Modify(fallback)
routes.Extended(fallback).
RequestName(ldap.NoticeOfWhoAmI).Label("Ext - WhoAmI")
routes.Extended(fallback).Label("Ext - Generic")
routes.Add(fallback).Label("Default Add")
routes.Bind(fallback).Label("Default Bind")
routes.Search(fallback).Label("Default Search")
return routes
}
示例7: newPool
func newPool(conf ini.File, logger log.Logger) (*pgx.ConnPool, error) {
logger = logger.New("module", "pgx")
if level, ok := conf.Get("log", "pgx_level"); ok {
setFilterHandler(level, logger, log.StdoutHandler)
}
connConfig := pgx.ConnConfig{Logger: logger}
connConfig.Host, _ = conf.Get("database", "host")
if connConfig.Host == "" {
return nil, errors.New("Config must contain database.host but it does not")
}
if p, ok := conf.Get("database", "port"); ok {
n, err := strconv.ParseUint(p, 10, 16)
connConfig.Port = uint16(n)
if err != nil {
return nil, err
}
}
var ok bool
if connConfig.Database, ok = conf.Get("database", "database"); !ok {
return nil, errors.New("Config must contain database.database but it does not")
}
connConfig.User, _ = conf.Get("database", "user")
connConfig.Password, _ = conf.Get("database", "password")
poolConfig := pgx.ConnPoolConfig{
ConnConfig: connConfig,
MaxConnections: 10,
}
return pgx.NewConnPool(poolConfig)
}
示例8: ParentLogger
func (fsm *LogFSM) ParentLogger(parent log15.Logger) {
fsm.logger = parent.New("module", "fsm")
}
示例9: NewRouteMux
// NewRouteMux returns a new *RouteMux
// RouteMux implements ldapserver.Handler
func NewRouteMux(logger log.Logger) *RouteMux {
return &RouteMux{
Log: logger.New(log.Ctx{"type": "router"}),
}
}
示例10: InitializeLogger
/*
InitializeLogger creates the logger for the server module
*/
func InitializeLogger(parentLogger log.Logger) {
logger = parentLogger.New("module", "server")
}
示例11: NewRaft
// NewRaft returns a new raft struct based on the provided configuration
func NewRaft(config *Config, logger log.Logger) (*Raft, error) {
rand.Seed(time.Now().Unix())
if config.StateMachine == nil {
return nil, fmt.Errorf("No state machine configured.")
}
inbox := make(chan *channelCmd, 4096)
// set advertise address, if set
advertise := config.Bind
if len(config.Advertise) > 0 {
advertise = config.Advertise
}
logger = logger.New("module", "raft", "server", advertise)
// cleanup old directories
if len(config.Peers) != 0 {
err := os.RemoveAll(config.BaseDir)
if err != nil {
return nil, err
}
}
// create basic directories
err := os.MkdirAll(config.BaseDir, os.FileMode(0700))
err = createDirs(config.BaseDir)
if err != nil {
logger.Error("Can not create directories", "error", err.Error())
return nil, err
}
// create stable
stable, err := newBoltDBStable(fmt.Sprintf("%s/logs", config.BaseDir), logger)
raftRPCImpl := newRaftRPC(logger, inbox)
// create raft rpc server
rpcServer, err := multiserver.NewRPCServer(config.Bind, codecFunc, raftRPCImpl, config.TLSConfig, logger)
if err != nil {
logger.Error("Can not create rpc server", "error", err.Error())
return nil, err
}
client := NewClient(config.ClientTLSConfig)
// create peer list without itself
// at the moment the config is static
// and needs restart for changes
peers := make(map[string]*peer)
for _, server := range config.Peers {
// check if this instance is in the list
if server != advertise {
p := &peer{
addr: server,
timeoutCh: make(chan bool),
syncing: false,
}
peers[server] = p
}
}
chMap := &channelMap{
responseWaiter: make(map[uint64]chan interface{}),
responseResult: make(map[uint64]interface{}),
}
vRaft := &Raft{
peers: peers,
state: Shutdown,
client: client,
appendResCh: make(chan *ResponseAppendEntry, 4096),
commitCh: make(chan uint64, 4096),
inbox: inbox,
config: config,
channelMap: chMap,
stable: stable,
logger: logger,
advertise: advertise,
rpcServer: rpcServer,
bind: config.Bind,
fsm: config.StateMachine,
voteRespCh: make(chan *ResponseVote, len(peers)),
commandCh: make(chan *channelCmd, 4096),
leaderCh: make(chan string, 5),
raftRPC: raftRPCImpl,
}
vRaft.workingSnapshot = &fsmSnapshot{
LastIndex: 0,
LastTerm: 0,
}
return vRaft, nil
}
示例12: NewServer
//NewServer return a LDAP Server
func NewServer(logger log.Logger) *Server {
return &Server{
chDone: make(chan bool),
log: logger.New(log.Ctx{"type": "ldap"}),
}
}