Skip to content

A simple logging interface that supports cross-platform color and concurrency.

License

Notifications You must be signed in to change notification settings

dixonwille/wlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

May 13, 2024
a39fa15 · May 13, 2024

History

68 Commits
May 13, 2024
Apr 15, 2016
Feb 22, 2017
Apr 15, 2016
Oct 30, 2023
Oct 29, 2023
Feb 22, 2017
Feb 22, 2017
Apr 22, 2016
Feb 22, 2017
Mar 5, 2024
Mar 5, 2024
Oct 29, 2023
Feb 22, 2017
Feb 22, 2017
Apr 22, 2016
Apr 22, 2016
Oct 29, 2023

Repository files navigation

WLogPull Requests

Package wlog creates simple to use UI structure. The UI is used to simply print to the screen. There a wrappers that will wrap each other to create a good looking UI. You can add color and prefixes as well as make it thread safe.

Documentation

https://pkg.go.dev/github.com/dixonwille/wlog/v3

Installation

WLog can be added to your go module file by running:

go get github.com/dixonwille/wlog/v3@latest

You can them import the library using an import statement:

import "github.com/dixonwille/wlog/v3"

Idea Behind WLog

I used Mitchellh's CLI structure and wrapping for the different structures. It was a clean look and feel. Plus it was pretty simple to use. But I didn't want all the other cli stuff that came with the package so I created this.

For color I use DavidDenGCN's Go-ColorText. His color package allows for color that is available cross-platforms. I made a wrapper with all possible color combinations with his package. So you only have to import this package (one less line).

Example Usage

This example creates a new wlog.UI instance, simulates a user providing input and calls UI functions that show output. If you wish to try the example and provide your own user input you can replace the reader variable with a reader such as os.Stdin which will read from a terminal.

var ui wlog.UI
reader := strings.NewReader("User Input\r\n") //Simulate user typing "User Input" then pressing [enter] when reading from os.Stdin
ui = wlog.New(reader, os.Stdout, os.Stdout)
ui = wlog.AddPrefix("?", wlog.Cross, " ", "", "", "~", wlog.Check, "!", ui)
ui = wlog.AddConcurrent(ui)

ui.Ask("Ask question", "")
ui.Error("Error message")
ui.Info("Info message")
ui.Output("Output message")
ui.Running("Running message")
ui.Success("Success message")
ui.Warn("Warning message")

Output:

? Ask question
✗ Error message
 Info message
Output message
~ Running message
✓ Success message
! Warning message

On Windows it outputs to this (this includes color):

winss

On Mac it outputs to this (this includes color):

macss