github.com/sereiner/library@v0.0.0-20200518095232-1fa3e640cc5f/log/appender.factory.go (about) 1 package log 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 type loggerAppenderFactory struct { 9 } 10 11 //MakeAppender 根据appender配置及日志信息生成appender对象 12 func (f *loggerAppenderFactory) MakeAppender(l *Appender, event *LogEvent) (IAppender, error) { 13 switch strings.ToLower(l.Type) { 14 case appender_file: 15 return NewFileAppender(f.MakeUniq(l, event), l) 16 case appender_stdout: 17 return NewStudoutAppender(f.MakeUniq(l, event), l) 18 default: 19 if value, b := registedFactory.Get(l.Type); b { 20 fa := value.(LoggerAppenderFactory) 21 return fa.MakeAppender(l, event) 22 } 23 } 24 return nil, fmt.Errorf("不支持的日志类型:%s", l.Type) 25 } 26 27 //MakeUniq 根据appender配置及日志信息生成appender唯一编号 28 func (f *loggerAppenderFactory) MakeUniq(l *Appender, event *LogEvent) string { 29 switch strings.ToLower(l.Type) { 30 case appender_file: 31 return transform(l.Path, event) 32 default: 33 if value, b := registedFactory.Get(l.Type); b { 34 fa := value.(LoggerAppenderFactory) 35 return fa.MakeUniq(l, event) 36 } 37 } 38 return l.Type 39 }