echelon

package module
v1.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2020 License: MIT Imports: 2 Imported by: 0

README

Echelon - hierarchical progress in terminals

Build Status

Cross-platform library to organize logs in a hierarchical structure.

Here is an example how it looks for running Dockerized tasks via Cirrus CLI:

Cirrus CLI Demo

asciicast

Features

  • Customizable and works with any VT100 compatible terminal
  • Supports simplified output for dumb terminals
  • Implements incremental drawing algorithm to optimize drawing performance
  • Can be used from multiple goroutines
  • Pluggable and customizable renderers
  • Works on Windows!

Example

Please check demo folder for a simple example or how echelon is used in Cirrus CLI.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LogEntryMessage

type LogEntryMessage struct {
	// Level is level o Log
	Level LogLevel
	// contains filtered or unexported fields
}

LogEntryMessage is a struct sends new message with certain level to node specified by scopes

func NewLogEntryMessage

func NewLogEntryMessage(scopes []string, level LogLevel, format string, a ...interface{}) *LogEntryMessage

NewLogEntryMessage creates a new log entry with path 'scopes', log level 'level', and message format, a...

func (*LogEntryMessage) GetMessage

func (entry *LogEntryMessage) GetMessage() string

GetMessage returns messages of log

func (*LogEntryMessage) GetScopes

func (entry *LogEntryMessage) GetScopes() []string

GetScopes returns the path of scope

type LogLevel

type LogLevel uint32

LogLevel is level of log

const (
	// ErrorLevel is level to print error
	ErrorLevel LogLevel = iota
	// WarnLevel will print warnnings
	WarnLevel
	// InfoLevel will print info
	InfoLevel
	// DebugLevel will output debug info
	DebugLevel
	// TraceLevel will output trace info
	TraceLevel

	// NoProgress refers that the node is not a progress bar
	NoProgress = 0
	// DefaultProgress refers that the node has progress bar without known progress size
	DefaultProgress = 100
)

type LogProcessMessage added in v1.3.3

type LogProcessMessage struct {
	Progress      int64
	Addprogress   int64
	Percentage    int
	Addpercentage int
	// contains filtered or unexported fields
}

LogProcessMessage sends progress message to node specified by scopes

func NewLogProcessMessage added in v1.3.3

func NewLogProcessMessage(scopes ...string) *LogProcessMessage

NewLogProcessMessage creates a log process

func (*LogProcessMessage) GetScopes added in v1.3.3

func (entry *LogProcessMessage) GetScopes() []string

GetScopes returns scopes of entry

type LogRenderer added in v1.3.3

type LogRenderer interface {
	// RenderScopeStarted will start a render job specified by entry
	RenderScopeStarted(entry *LogScopeStarted)
	// RenderScopeFinished will finish render job of node specified by entry
	RenderScopeFinished(entry *LogScopeFinished)
	// RenderMessage will send new messages to node specified by entry
	RenderMessage(entry *LogEntryMessage)
	// RenderProcess send progress message to node specified by entry
	RenderProcess(entry *LogProcessMessage)
}

LogRenderer interface defines a log which can start/finish and render

type LogScopeFinished

type LogScopeFinished struct {
	// contains filtered or unexported fields
}

LogScopeFinished sends finished message and finish status(succeed or failed) to node specified with path

func NewLogScopeFinished

func NewLogScopeFinished(success bool, scopes ...string) *LogScopeFinished

NewLogScopeFinished will create LogScopeFinished

func (*LogScopeFinished) GetScopes

func (entry *LogScopeFinished) GetScopes() []string

GetScopes will returns scopes of LogScopeFinished

func (*LogScopeFinished) Success

func (entry *LogScopeFinished) Success() bool

Success returns wheter to LogScopeFinished has finished successfully

type LogScopeStarted

type LogScopeStarted struct {
	// contains filtered or unexported fields
}

LogScopeStarted sends start message to with time stamp to node specified by scopes

func NewLogScopeStarted

func NewLogScopeStarted(total int64, scopes ...string) *LogScopeStarted

NewLogScopeStarted will create a LogScopeStarted with LogScopeStarted. scopes is path of log. If the total is not 0, then it starts a log with progress bar

func (*LogScopeStarted) GetProgressSize added in v1.3.3

func (entry *LogScopeStarted) GetProgressSize() int64

GetProgressSize returns size of progress

func (*LogScopeStarted) GetScopes

func (entry *LogScopeStarted) GetScopes() []string

GetScopes will return scopes path of entry

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

Logger is a log object with a log level, scopes and entries chan.entries Channel will render all entries it receive after calling (*Logger).streamEntries function

func NewLogger

func NewLogger(level LogLevel, renderer LogRenderer) *Logger

NewLogger creates a log object with new generated entries channel. And use renderer as renderer of logger

func (*Logger) AddPercentage added in v1.3.3

func (logger *Logger) AddPercentage(addpercentage int)

AddPercentage will sets progress of logger

func (*Logger) AddProgress added in v1.3.3

func (logger *Logger) AddProgress(addprogress int64)

AddProgress will add progress of logger

func (*Logger) Bar added in v1.3.3

func (logger *Logger) Bar(scope string) *Logger

Bar creates a node with progress bar and name (scope)

func (*Logger) BarWithSize added in v1.3.3

func (logger *Logger) BarWithSize(total int64, scope string) *Logger

BarWithSize creates a node with progress bar which has a certain progress size and name (scope)

func (*Logger) Debugf

func (logger *Logger) Debugf(format string, args ...interface{})

Debugf will print debug info

func (*Logger) Errorf

func (logger *Logger) Errorf(format string, args ...interface{})

Errorf will print error

func (*Logger) Finish

func (logger *Logger) Finish(success bool)

Finish will finsh a log with success status (true for succeed, false for failed), it will sends a NewLogScopeFinished to logger

func (*Logger) Infof

func (logger *Logger) Infof(format string, args ...interface{})

Infof will print info

func (*Logger) IsLogLevelEnabled

func (logger *Logger) IsLogLevelEnabled(level LogLevel) bool

IsLogLevelEnabled returns wheter a log will print to Writer

func (*Logger) Logf

func (logger *Logger) Logf(level LogLevel, format string, args ...interface{})

Logf sends a log message with LogLevel level to logger

func (*Logger) Scoped

func (logger *Logger) Scoped(scope string) *Logger

Scoped creates a node with name(scope)

func (*Logger) SetPercentage added in v1.3.3

func (logger *Logger) SetPercentage(percentage int)

SetPercentage will sets progress of logger

func (*Logger) SetProgress added in v1.3.3

func (logger *Logger) SetProgress(progress int64)

SetProgress will sets progress of logger

func (*Logger) Tracef

func (logger *Logger) Tracef(format string, args ...interface{})

Tracef will print trace info

func (*Logger) Warnf

func (logger *Logger) Warnf(format string, args ...interface{})

Warnf will print warnning info

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL