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  }