Documentation
¶
Index ¶
Constants ¶
View Source
const ( DirectoryFieldName = "buffer.file.directory" NamePatternFieldName = "buffer.file.name_pattern" RotationStrategyFieldName = "buffer.file.rotation.strategy" RotationSizeHumanReadableFieldName = "buffer.file.rotation.size" CompressorFieldName = "buffer.file.compressor" AutoDeleteFieldName = "buffer.file.auto_delete" DayRotationStrategy = "day" HourRotationStrategy = "hour" SizeRotationStrategy = "size" CompressorNone = "none" CompressorTrue = "true" CompressorTarGZ = "tar_gz" CompressorZIP = "zip" NamePatternDefault = "data_" + namer.UnixTimeNanoPattern + ".bin" RotationStrategyDefault = SizeRotationStrategy RotationSizeDefault = 10 * size.MiB CompressorDefault = CompressorNone AutoDeleteDefault = false )
Variables ¶
View Source
var ( DirectoryDefault = filepath.Join(os.TempDir(), "go_app") RotationSizeHumanReadableDefault = size.FormatBinary(RotationSizeDefault) )
View Source
var Component = &app.Component{ Dependencies: app.Components{ configurator.Component, metric.Component, }, Constructor: app.Constructor(func(container container.Container) error { return container.Provides( NewConfig, NewWithConfigurator, func(buffer *file.File) Buffer { return buffer }, ) }), BindFlags: app.BindFlags(func(flagSet *pflag.FlagSet, container container.Container) error { return container.Invoke(func(config *Config) { flagSet.StringVar(&config.Directory, DirectoryFieldName, DirectoryDefault, "directory for storing data files") flagSet.StringVar(&config.NamePattern, NamePatternFieldName, NamePatternDefault, fmt.Sprintf( "file naming pattern to rotate them. Available preset values: : [%s]", strings.Join([]string{ namer.YearPattern, namer.MonthPattern, namer.DayPattern, namer.HourPattern, namer.MinutePattern, namer.SecondPattern, namer.UnixTimePattern, namer.UnixTimeNanoPattern, }, ","), )) flagSet.StringVar(&config.RotationStrategy, RotationStrategyFieldName, RotationStrategyDefault, fmt.Sprintf( "file rotation strategy. Available strategies: "+ "%s - file rotation once a day; "+ "%s - file rotation once per hour; "+ "%s - rotates the file when it reaches a certain size.", DayRotationStrategy, HourRotationStrategy, SizeRotationStrategy, )) flagSet.StringVar(&config.RotationSizeHumanReadable, RotationSizeHumanReadableFieldName, RotationSizeHumanReadableDefault, fmt.Sprintf( "file size to rotate if rotation strategy is selected - %s", SizeRotationStrategy, )) flagSet.StringVar(&config.Compressor, CompressorFieldName, CompressorDefault, fmt.Sprintf( "data compression algorithm. Available algorithms: "+ "%s - no compression; "+ "%s - the algorithm is selected automatically, for unix-like systems tar.gz is selected, for windows - zip; "+ "%s - compression of the finished file chunk using the tar and gz algorithms; "+ "%s - compression of the finished file chunk by the zip algorithm.", CompressorNone, CompressorTrue, CompressorTarGZ, CompressorZIP, )) flagSet.BoolVar( &config.AutoDelete, AutoDeleteFieldName, AutoDeleteDefault, "if true, adds a middleware that removes a file fragment after it has been read completely", ) }) }), }
Functions ¶
func NewWithConfigurator ¶
func NewWithConfigurator( closer closer.Closer, config *Config, configurator configurator.Configurator, metric *metric.Metric, ) (*file.File, error)
Types ¶
type Buffer ¶ added in v1.8.12
type Buffer io.ReadWriteCloser
type Config ¶
type Config struct { Directory string NamePattern string NameForMetric string RotationStrategy string RotationSizeHumanReadable string RotationSize uint64 Compressor string AutoDelete bool }
func Configuration ¶
func Configuration(config *Config, configurator configurator.Configurator) (*Config, error)
Click to show internal directories.
Click to hide internal directories.