聊聊zerolog的Hook

2021-01-07
阅读 4 分钟
3.6k
序本文主要研究一下zerolog的HookHookgithub.com/rs/zerolog@v1.20.0/hook.go {代码...} Hook接口定义了Run方法,它接收event、level、message参数LevelHookgithub.com/rs/zerolog@v1.20.0/hook.go {代码...} LevelHook定义了各种level的hook,其Run方法根据指定的level执行指定的hookHookFuncgithub.com/rs/zerolog@v1....

聊聊zerolog的Formatter

2021-01-06
阅读 3 分钟
2k
序本文主要研究一下zerolog的FormatterFormattergithub.com/rs/zerolog@v1.20.0/console.go {代码...} Formatter接口定义了一个func用于将interface{}转换为stringConsoleWritergithub.com/rs/zerolog@v1.20.0/console.go {代码...} ConsoleWriter定义了TimeFormat、FormatTimestamp、FormatLevel、FormatCaller、Format...

聊聊zerolog的diode.Writer

2021-01-05
阅读 6 分钟
2.5k
diode.Writer是一个lock-free,non-blocking及thread safe的Writer;它借助了diodes来实现;NewWriter会创建diode.Writer,并启动dw.poll()

聊聊zerolog的encoder

2021-01-04
阅读 7 分钟
1.7k
序本文主要研究一下zerolog的encoderencodergithub.com/rs/zerolog@v1.20.0/encoder.go {代码...} encoder接口定义了一系列的Append方法AppendMarkergithub.com/rs/zerolog@v1.20.0/internal/json/types.go {代码...} AppendBeginMarker及AppendEndMarker用于追加map start和endAppendArraygithub.com/rs/zerolog@v1.20....

聊聊zerolog的Level

2021-01-03
阅读 4 分钟
2.3k
Level为int8类型,其中trace最小为-1,之后是debug、info、warn、error、fatal、panic、NoLevel及Disabled

聊聊zerolog的LevelWriter

2021-01-02
阅读 3 分钟
2.4k
序本文主要研究一下zerolog的LevelWriterLevelWritergithub.com/rs/zerolog@v1.20.0/writer.go {代码...} LevelWriter接口内嵌了io.Writer接口,定义了WriteLevel方法levelWriterAdaptergithub.com/rs/zerolog@v1.20.0/writer.go {代码...} levelWriterAdapter内嵌了io.Writer属性,实现了LevelWriter的WriteLevel方法,...

聊聊zerolog的send

2021-01-01
阅读 3 分钟
2.8k
序本文主要研究一下zerolog的send实例 {代码...} 使用Send或者Msg来发送log输出 {代码...} Sendgithub.com/rs/zerolog@v1.20.0/event.go {代码...} Send方法相当于Msg("")msggithub.com/rs/zerolog@v1.20.0/event.go {代码...} msg方法先执行hook,之后对于有msg的添加message字段,如果done不为nil则defer注册回调,之...

2020年终总结

2020-12-31
阅读 1 分钟
2.5k
canal、mysql-binlog-connector-java、maxwell、debezium、rocketmq-mysql、SpinalTap、puma、Otter、kingbus研究

聊聊klog的klogger

2020-12-30
阅读 6 分钟
2.9k
logr类似java的slf4j,其Logger接口定义了Enabled、Info、Error、V、WithValues、WithName方法

聊聊klog的header

2020-12-29
阅读 3 分钟
2.7k
序本文主要研究一下klog的headerprintlnk8s.io/klog/v2@v2.4.0/klog.go {代码...} println方法先执行l.header(s, 0),若logr不为nil则先l.putBuffer(buf),然后重新设置bufheaderk8s.io/klog/v2@v2.4.0/klog.go {代码...} header方法最后执行l.formatHeaderformatHeaderk8s.io/klog/v2@v2.4.0/klog.go {代码...} 如果设...

聊聊klog的Flush

2020-12-28
阅读 6 分钟
3k
序本文主要研究一下klog的FlushFlushk8s.io/klog/v2@v2.4.0/klog.go {代码...} Flush方法执行的是logging.lockAndFlushAll()initk8s.io/klog/v2@v2.4.0/klog.go {代码...} klog的init方法异步协程执行logging.flushDaemon()logging.flushDaemon()k8s.io/klog/v2@v2.4.0/klog.go {代码...} flushDaemon方法range新建ticke...

聊聊klog的LogFilter

2020-12-27
阅读 8 分钟
2k
序本文主要研究一下klog的LogFilterLogFilterk8s.io/klog/v2@v2.4.0/klog.go {代码...} LogFilter接口定义了Filter、FilterF、FilterS方法用于过滤logfilter.Filterk8s.io/klog/v2@v2.4.0/klog.go {代码...} println、printDepth、printWithFileLine会通过filter.Filter(args)来过滤argsfilter.FilterFk8s.io/klog/v2@v2...

聊聊klog的info方法

2020-12-26
阅读 3 分钟
2.8k
序本文主要研究一下klog的info方法Infok8s.io/klog/v2@v2.4.0/klog.go {代码...} Info使用logging.print打印info级别的日志,参数的处理跟fmt.Print类似,若没有换行则会追加换行InfoDepthk8s.io/klog/v2@v2.4.0/klog.go {代码...} InfoDepth可以指定要打印的call frame,Info使用的depth为0Infolnk8s.io/klog/v2@v2.4.0...

聊聊golang的lumberjack

2020-12-25
阅读 9 分钟
3.2k
Logger定义了Filename、MaxSize(单个文件大小最大值,单位M)、MaxAge(单位天)、MaxBackups、LocalTime、Compress属性,另外还有私有属性size、file、sync.Mutex、millCh、startMill

从log4j2的角度看golang的zap

2020-12-24
阅读 1 分钟
3.5k
序本文主要从log4j2的角度对zap做一下小结log4j2配置从配置文件上看,分为如下几个部分:propertiesappendersfilterpattern layoutmdcpoliciesSizeBasedTriggeringPolicyTimeBasedTriggeringPolicyrollover strategyloggersrootloggerasync loggerasync root使用在使用上主要是考虑几点:log的输入mdc的输入kv结构的输入...

聊聊golang的zap的error

2020-12-23
阅读 8 分钟
6.6k
Error方法使用NamedError创建err的Field;NamedError创建的fieldType为zapcore.ErrorType;errArray类型实现了ArrayMarshaler的MarshalLogArray方法;errArrayElem实现了ObjectMarshaler的MarshalLogObject方法;error.go定义了_errArrayElemPool,其pool的元素类型为errArrayElem

聊聊golang的zap的Sink

2020-12-22
阅读 5 分钟
4.1k
序本文主要研究一下golang的zap的SinkSinkzap@v1.16.0/sink.go {代码...} Sink接口内嵌了zapcore.WriteSyncer(Write、Sync)、io.Closer(Close)接口RegisterSinkzap@v1.16.0/sink.go {代码...} RegisterSink方法会往_sinkFactories注册指定scheme的sink factory,该factory接收url.URL返回Sink;resetSinkRegistry方法默...

聊聊golang的zap的level

2020-12-21
阅读 5 分钟
4k
序本文主要研究一下golang的zap的levelLevelzap@v1.16.0/zapcore/level.go {代码...} Level为int8类型,其中DebugLevel值最小,FatalLevel值最大LevelEnablerzap@v1.16.0/zapcore/level.go {代码...} LevelEnabler接口定义了Enabled方法,Level的Enabled方法判断lvl是否大于等于llevelToColorzap@v1.16.0/zapcore/level_...

聊聊golang的zap的ReflectType

2020-12-20
阅读 10 分钟
2.2k
序本文主要研究一下golang的zap的ReflectTypesweetenFieldszap@v1.16.0/sugar.go {代码...} sweetenFields方法执行的是fields = append(fields, Any(keyStr, val))Anyzap@v1.16.0/field.go {代码...} Any方法会根据value的类型返回不同的Field,如果value没有实现zapcore.ObjectMarshaler、zapcore.ArrayMarshaler,也不...

聊聊golang的zap的marshaler

2020-12-19
阅读 5 分钟
3.5k
ObjectMarshaler接口定义了MarshalLogObject方法;ObjectMarshalerFunc类型定义了MarshalLogObject方法,使得ObjectMarshalerFunc实现ObjectMarshaler接口

聊聊golang的zap的Field

2020-12-18
阅读 7 分钟
5.1k
序本文主要研究一下golang的zap的FieldFieldzap@v1.16.0/zapcore/field.go {代码...} Field定义了Key、FieldType、Integer、String、Interface属性AddTozap@v1.16.0/zapcore/field.go {代码...} AddTo方法根据Field的类型来执行encoder的对应方法将Field的key和value添加到encoder中Equalszap@v1.16.0/zapcore/field.go ...

聊聊golang的zap的encoder

2020-12-18
阅读 7 分钟
5.2k
序本文主要研究一下golang的zap的encoderencoderzap@v1.16.0/zapcore/encoder.go {代码...} Encoder接口内嵌了ObjectEncoder,定义了Clone、EncodeEntry方法ObjectEncoderzap@v1.16.0/zapcore/encoder.go {代码...} ObjectEncoder接口定义了各种类型的一系列Add方法MapObjectEncoderzap@v1.16.0/zapcore/memory_encoder....

聊聊golang的zap的CheckedEntry

2020-12-16
阅读 4 分钟
2.2k
序本文主要研究一下golang的zap的CheckedEntryEntryzap@v1.16.0/zapcore/entry.go {代码...} Entry定义了Level、Time、LoggerName、Message、Caller、Stack属性CheckedEntryzap@v1.16.0/zapcore/entry.go {代码...} CheckedEntry内嵌了Entry,定义了ErrorOutput、dirty、CheckWriteAction、cores属性resetzap@v1.16.0/za...

聊聊golang的zap的hook

2020-12-15
阅读 3 分钟
3.8k
序本文主要研究一下golang的zap的hook实例 {代码...} 输出 {代码...} Hookszap@v1.16.0/options.go {代码...} Hooks方法将log的core使用zapcore.RegisterHooks包装了一下zapcore.RegisterHookszap@v1.16.0/zapcore/hook.go {代码...} RegisterHooks方法创建hooked,hooks赋值给hooked的funcs属性hookzap@v1.16.0/zapcore...

聊聊golang的zap的buffer

2020-12-14
阅读 5 分钟
3.4k
Buffer定义了[]byte及Pool属性,它提供了AppendByte、AppendString、AppendInt、AppendTime、AppendUint、AppendBool、AppendFloat、String、Reset、Write、TrimNewline、Free方法

聊聊golang的zap的global.go

2020-12-13
阅读 5 分钟
4.2k
global定义了_globalL及_globalS,L()方法通过加读锁的方式返回_globalL,S()通过加读锁的方式返回_globalS,之所以要加读锁是因为ReplaceGlobals方法会修改_globalL及_globalS

聊聊golang的zap的NewTee

2020-12-12
阅读 2 分钟
2.6k
NewTee方法根据cores个数来返回不同的Core,若len(cores)为0,返回NewNopCore,若为1则返回cores[0],默认返回[]Core

聊聊golang的zap的zapgrpc

2020-12-11
阅读 5 分钟
2.9k
zapgrpc提供了对grpclog.Logger的适配,NewLogger将zap.Logger适配为zapgrpc.Logger,而该logger实现了grpclog.Logger接口

聊聊golang的zap的ZapKafkaWriter

2020-12-10
阅读 3 分钟
3k
ZapKafkaWriter定义了KafkaProducer、CloudEvents、closed、pendingWg、closeMut属性,其newZapKafkaWriter方法根据ProducerConfiguration、cloudEvents、CloudEventsConfiguration来创建KafkaProducer,然后根据KafkaProducer来创建ZapKafkaWriter

聊聊golang的zap的WriteSyncer

2020-12-09
阅读 6 分钟
5.3k
序本文主要研究一下golang的zap的WriteSyncerWriteSyncerzap@v1.16.0/zapcore/write_syncer.go {代码...} WriteSyncer内嵌了io.Writer接口,定义了Sync方法Writer/usr/local/go/src/io/io.go {代码...} Writer接口定义了Write方法lockedWriteSyncerzap@v1.16.0/zapcore/write_syncer.go {代码...} lockedWriteSyncer定义...