Skip to content

Instantly share code, notes, and snippets.

@kemokemo
Created July 22, 2017 04:51
Show Gist options
  • Save kemokemo/1b3527f2e187191746407ff582d13fa0 to your computer and use it in GitHub Desktop.
Save kemokemo/1b3527f2e187191746407ff582d13fa0 to your computer and use it in GitHub Desktop.
logging code sample by golang
package main
import (
"encoding/csv"
"fmt"
"io"
"log"
"os"
"time"
"golang.org/x/text/encoding/japanese"
"golang.org/x/text/transform"
)
var (
csvWriter *csv.Writer
)
func main() {
os.Exit(run())
}
func run() int {
// Normal logging + file
logName := time.Now().Format("./logs/log_20060102-030405.txt")
logfile, err := os.Create(logName)
if err != nil {
log.Println("Failed to create a log file.", err)
return 1
}
defer logfile.Close()
log.SetOutput(io.MultiWriter(os.Stdout, logfile))
someFunc()
// csv logging
csvName := time.Now().Format("./logs/sensor_20060102-030405.csv")
csvfile, err := os.Create(csvName)
if err != nil {
log.Println("Failed to create a csv file.", err)
return 1
}
defer csvfile.Close()
csvWriter = csv.NewWriter(transform.NewWriter(csvfile, japanese.ShiftJIS.NewEncoder()))
anyFunc()
csvWriter.Flush()
return 0
}
func someFunc() {
log.Println("logging!")
}
func anyFunc() {
csvWriter.Write([]string{"Time", "Raw-Value"})
value := 543
csvWriter.Write([]string{
time.Now().Format("2006/01/02 03:04:05"),
fmt.Sprintf("%v", value),
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment