func EpochID(val uint64) Field {
	return Uint64("epoch_id", val)
}
EpochID return a Uint64 field (key - "epoch_id")
package log
import (
	"fmt"
	"runtime/debug"
	"time"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
)
var NilLogger Log
type Log struct {
	logger *zap.Logger
	sugar  *zap.SugaredLogger
	lvl    *zap.AtomicLevel
}
func (l Log) Info(format string, args ...interface{}) {
	l.sugar.Infof(format, args...)
}
func (l Log) Debug(format string, args ...interface{}) {
	l.sugar.Debugf(format, args...)
}
func (l Log) Error(format string, args ...interface{}) {
	l.sugar.Errorf(format, args...)
}
func (l Log) Warning(format string, args ...interface{}) {
	l.sugar.Warnf(format, args...)
}
func (l Log) Panic(format string, args ...interface{}) {
	l.sugar.Error("Fatal: goroutine panicked. Stacktrace: ", string(debug.Stack()))
	l.sugar.Panicf(format, args...)
}
type Field zap.Field
func (f Field) Field() Field { return f }
func String(name, val string) Field {
	return Field(zap.String(name, val))
}
func ByteString(name string, val []byte) Field {
	return Field(zap.ByteString(name, val))
}
func Int(name string, val int) Field {
	return Field(zap.Int(name, val))
}
func Int32(name string, val int32) Field {
	return Field(zap.Int32(name, val))
}
func Uint32(name string, val uint32) Field {
	return Field(zap.Uint32(name, val))
}
func Uint64(name string, val uint64) Field {
	return Field(zap.Uint64(name, val))
}
func Namespace(name string) Field {
	return Field(zap.Namespace(name))
}
func Bool(name string, val bool) Field {
	return Field(zap.Bool(name, val))
}
func Duration(name string, val time.Duration) Field {
	return Field(zap.Duration(name, val))
}
func LayerID(val uint64) Field {
	return Uint64("layer_id", val)
}
func TxID(val string) Field {
	return String("tx_id", val)
}
func AtxID(val string) Field {
	return String("atx_id", val)
}
func BlockID(val string) Field {
	return String("block_id", val)
}