1 Star 0 Fork 0

陈文甲/fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
bccsp
cmd
common
attrmgr
capabilities
cauthdsl
chaincode
channelconfig
config
configtx
crypto
deliver
errors
flogging
fabenc
color.go
color_test.go
encoder.go
encoder_test.go
formatter.go
formatter_test.go
floggingtest
mock
core.go
core_test.go
global.go
global_test.go
legacy.go
levels.go
levels_test.go
logging.go
logging_test.go
modulelevels.go
modulelevels_test.go
zap.go
zap_test.go
genesis
graph
ledger
localmsp
metadata
metrics
mocks
policies
tools
util
viperutil
core
devenv
discovery
docs
examples
gossip
idemix
images
integration
msp
orderer
peer
protos
release/templates
release_notes
sampleconfig
scripts
token
unit-test
vendor
.dockerignore
.gitattributes
.gitignore
.gitreview
.travis.yml
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Gopkg.lock
Gopkg.toml
LICENSE
Makefile
README.md
ci.properties
docker-env.mk
gotools.mk
settings.gradle
test-pyramid.png
testingInfo.rst
tox.ini
克隆/下载
encoder.go 1.70 KB
一键复制 编辑 原始数据 按行查看 历史
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package fabenc
import (
"io"
"go.uber.org/zap/buffer"
"go.uber.org/zap/zapcore"
)
// A FormatEncoder is a zapcore.Encoder that formats log records according to a
// go-logging based format specifier.
type FormatEncoder struct {
zapcore.Encoder
formatters []Formatter
pool buffer.Pool
consoleEncoder zapcore.Encoder
}
// A Formatter is used to format and write data from a zap log entry.
type Formatter interface {
Format(w io.Writer, entry zapcore.Entry, fields []zapcore.Field)
}
func NewFormatEncoder(formatters ...Formatter) *FormatEncoder {
return &FormatEncoder{
Encoder: zapcore.NewConsoleEncoder(zapcore.EncoderConfig{LineEnding: "\n"}),
formatters: formatters,
pool: buffer.NewPool(),
}
}
// Clone creates a new instance of this encoder with the same configuration.
func (f *FormatEncoder) Clone() zapcore.Encoder {
return &FormatEncoder{
Encoder: f.Encoder.Clone(),
formatters: f.formatters,
pool: f.pool,
}
}
// EncodeEntry formats a zap log record. The structured fields are formatted by a
// zapcore.ConsoleEncoder and are appended as JSON to the end of the formatted entry.
// All entries are terminated by a newline.
func (f *FormatEncoder) EncodeEntry(entry zapcore.Entry, fields []zapcore.Field) (*buffer.Buffer, error) {
line := f.pool.Get()
for _, f := range f.formatters {
f.Format(line, entry, fields)
}
encodedFields, err := f.Encoder.EncodeEntry(entry, fields)
if err != nil {
return nil, err
}
if line.Len() > 0 && encodedFields.Len() != 1 {
line.AppendString(" ")
}
line.AppendString(encodedFields.String())
encodedFields.Free()
return line, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/venjia/fabric.git
git@gitee.com:venjia/fabric.git
venjia
fabric
fabric
v1.3.0-rc1

搜索帮助