...

Source file src/github.com/go-kit/kit/log/example_test.go

Documentation: github.com/go-kit/kit/log

     1  package log_test
     2  
     3  import (
     4  	"math/rand"
     5  	"os"
     6  	"sync"
     7  	"time"
     8  
     9  	"github.com/go-kit/kit/log"
    10  )
    11  
    12  func Example_basic() {
    13  	logger := log.NewLogfmtLogger(os.Stdout)
    14  
    15  	type Task struct {
    16  		ID int
    17  	}
    18  
    19  	RunTask := func(task Task, logger log.Logger) {
    20  		logger.Log("taskID", task.ID, "event", "starting task")
    21  
    22  		logger.Log("taskID", task.ID, "event", "task complete")
    23  	}
    24  
    25  	RunTask(Task{ID: 1}, logger)
    26  
    27  	// Output:
    28  	// taskID=1 event="starting task"
    29  	// taskID=1 event="task complete"
    30  }
    31  
    32  func Example_contextual() {
    33  	logger := log.NewLogfmtLogger(os.Stdout)
    34  
    35  	type Task struct {
    36  		ID  int
    37  		Cmd string
    38  	}
    39  
    40  	taskHelper := func(cmd string, logger log.Logger) {
    41  		// execute(cmd)
    42  		logger.Log("cmd", cmd, "dur", 42*time.Millisecond)
    43  	}
    44  
    45  	RunTask := func(task Task, logger log.Logger) {
    46  		logger = log.With(logger, "taskID", task.ID)
    47  		logger.Log("event", "starting task")
    48  
    49  		taskHelper(task.Cmd, logger)
    50  
    51  		logger.Log("event", "task complete")
    52  	}
    53  
    54  	RunTask(Task{ID: 1, Cmd: "echo Hello, world!"}, logger)
    55  
    56  	// Output:
    57  	// taskID=1 event="starting task"
    58  	// taskID=1 cmd="echo Hello, world!" dur=42ms
    59  	// taskID=1 event="task complete"
    60  }
    61  
    62  func Example_valuer() {
    63  	logger := log.NewLogfmtLogger(os.Stdout)
    64  
    65  	count := 0
    66  	counter := func() interface{} {
    67  		count++
    68  		return count
    69  	}
    70  
    71  	logger = log.With(logger, "count", log.Valuer(counter))
    72  
    73  	logger.Log("call", "first")
    74  	logger.Log("call", "second")
    75  
    76  	// Output:
    77  	// count=1 call=first
    78  	// count=2 call=second
    79  }
    80  
    81  func Example_debugInfo() {
    82  	logger := log.NewLogfmtLogger(os.Stdout)
    83  
    84  	// make time predictable for this test
    85  	baseTime := time.Date(2015, time.February, 3, 10, 0, 0, 0, time.UTC)
    86  	mockTime := func() time.Time {
    87  		baseTime = baseTime.Add(time.Second)
    88  		return baseTime
    89  	}
    90  
    91  	logger = log.With(logger, "time", log.Timestamp(mockTime), "caller", log.DefaultCaller)
    92  
    93  	logger.Log("call", "first")
    94  	logger.Log("call", "second")
    95  
    96  	// ...
    97  
    98  	logger.Log("call", "third")
    99  
   100  	// Output:
   101  	// time=2015-02-03T10:00:01Z caller=example_test.go:93 call=first
   102  	// time=2015-02-03T10:00:02Z caller=example_test.go:94 call=second
   103  	// time=2015-02-03T10:00:03Z caller=example_test.go:98 call=third
   104  }
   105  
   106  func Example_syncWriter() {
   107  	w := log.NewSyncWriter(os.Stdout)
   108  	logger := log.NewLogfmtLogger(w)
   109  
   110  	type Task struct {
   111  		ID int
   112  	}
   113  
   114  	var wg sync.WaitGroup
   115  
   116  	RunTask := func(task Task, logger log.Logger) {
   117  		logger.Log("taskID", task.ID, "event", "starting task")
   118  
   119  		time.Sleep(time.Duration(rand.Intn(200)) * time.Millisecond)
   120  
   121  		logger.Log("taskID", task.ID, "event", "task complete")
   122  		wg.Done()
   123  	}
   124  
   125  	wg.Add(2)
   126  
   127  	go RunTask(Task{ID: 1}, logger)
   128  	go RunTask(Task{ID: 2}, logger)
   129  
   130  	wg.Wait()
   131  
   132  	// Unordered output:
   133  	// taskID=1 event="starting task"
   134  	// taskID=2 event="starting task"
   135  	// taskID=1 event="task complete"
   136  	// taskID=2 event="task complete"
   137  }
   138  

View as plain text