func NewProdFormatter(options ...ProdFormatterOption) *ProdFormatter {
	f := &ProdFormatter{}

	for _, option := range options {
		option(f)
	}

	var err error
	if f.hostname == "" {
		if f.hostname, err = os.Hostname(); err != nil {
			f.hostname = "unknown"
		}
	}

	if f.appname == "" {
		if f.appname, err = osext.Executable(); err == nil {
			f.appname = filepath.Base(f.appname)
		} else {
			f.appname = "app"
		}
	}

	return f
}
// NewProdFormatter creates a new cloudwatchlogs production formatter.
// This is opinionated and you can feel free to create your own.
NewProdFormatter creates a new cloudwatchlogs production formatter.
This is opinionated and you can feel free to create your own.
// NewProdFormatter creates a new cloudwatchlogs production formatter . // This is opinionated and you can feel free to create your own .
func NewProdFormatter(options ...ProdFormatterOption) *ProdFormatter {
	f := &ProdFormatter{}
	for _, option := range options {
		option(f)
	}
	var err error
	if f.hostname == "" {
		if f.hostname, err = os.Hostname(); err != nil {
			f.hostname = "unknown"
		}
	}
	if f.appname == "" {
		if f.appname, err = osext.Executable(); err == nil {
			f.appname = filepath.Base(f.appname)
		} else {
			f.appname = "app"
		}
	}
	return f
}
func NewProdFormatter ( options ... ProdFormatterOption ) * ProdFormatter { f := & ProdFormatter { } for _ , option := range options { option ( f ) } var err error if f . hostname == " " { if f . hostname , err = os . Hostname ( ) ; err != nil { f . hostname = " " } } if f . appname == " " { if f . appname , err = osext . Executable ( ) ; err == nil { f . appname = filepath . Base ( f . appname ) } else { f . appname = " " } } return f }
NewProdFormatter creates a new cloudwatchlogs production formatter.
NewProdFormatter creates a new cloudwatchlogs production formatter .