Mohammad Gholami
20 Jan 2021
•
2 min read
The log
package in Golang, allows you to send log messages to log files. This log file can be syslog
, mail.log
, or your custom log file.
In this article, you'll learn how to do this.
We are going to use log/syslog
package to set the log file.
syslog
The example below shows you the way of sending log messages to /var/log/syslog
file in Unix os.
package main
import (
"log"
"log/syslog"
"os"
)
func main() {
// Log to syslog
logWriter, err := syslog.New(syslog.LOG_SYSLOG, "My Awesome App")
if err != nil {
log.Fatalln("Unable to set logfile:", err.Error())
return
}
// set the log output
log.SetOutput(logWriter)
log.Println("This is a log from GOLANG")
}
Now, if you run the application, This is a log from GOLANG
will be logged in the syslog
file.
You can check it using this command:
$ tail -f /var/log/syslog
The output would be something like this:
...
Dec 23 01:12:21 sam My Awesome App[102379]: 2020/12/23 01:12:21 This is a log from GOLANG
Sometimes you need to log the line number logged message. To do that, you have to set the Lshortfile
flag to the log package.
package main
import (
"log"
"log/syslog"
"os"
)
func main() {
// Log to syslog
logWriter, err := syslog.New(syslog.LOG_SYSLOG, "My Awesome App")
if err != nil {
log.Fatalln("Unable to set logfile:", err.Error())
return
}
// + set log flag
log.SetFlags(log.Lshortfile)
// set the log output
log.SetOutput(logWriter)
log.Println("This is a log from GOLANG")
}
The logged message would be like this:
Dec 23 01:17:28 sam My Awesome App[103468]: logging.go:20: This is a log from GOLANG
As you can see, logging.go:20:
is added to the log message and tell you the filename and line number of the code that the log function called.
If you want to write your log messages to a custom log file, take a look at the example below:
package main
import (
"log"
"log/syslog"
"os"
)
func main() {
// log to custom file
LOG_FILE := "/tmp/myapp_log"
// open log file
logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644)
if err != nil {
log.Panic(err)
return
}
defer logFile.Close()
// Set log out put and enjoy :)
log.SetOutput(logFile)
// optional: log date-time, filename, and line number
log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Println("Logging to custom file")
}
Now run the application and check the result:
$ tail -f /tmp/myapp_log
2020/12/23 01:29:25 logging.go:29: Logging to custom file
These were 2 simple ways to save log messages to log files. I hope you find it helpful.
Ground Floor, Verse Building, 18 Brunswick Place, London, N1 6DZ
108 E 16th Street, New York, NY 10003
Join over 111,000 others and get access to exclusive content, job opportunities and more!