How to configure log rotation based on file size in Go?

To configure log rotation based on file size in Go, you can use the logrotate package. Here's an example of how you can do it:

  1. Install the logrotate package by running the following command in your terminal:
go get github.com/natefinch/lumberjack
  1. Import the package in your Go file:
import ( "log" "github.com/natefinch/lumberjack" )
  1. Configure log rotation by creating a lumberjack.Logger instance:
func main() { logger := &lumberjack.Logger{ Filename: "logs/app.log", // Path to the log file MaxSize: 500, // Maximum size in megabytes before rotation MaxBackups: 3, // Number of backups to keep MaxAge: 28, // Maximum number of days to keep Compress: true, // Compression enabled } log.SetOutput(logger) defer logger.Close() // Log your statements log.Println("This is a log entry.") }

In the above example, the log file logs/app.log will be rotated when it reaches 500 megabytes. Three backup log files will be kept, and logs exceeding 28 days will be automatically deleted. The rotated files will be compressed.

Ensure that you handle any potential errors such as writing permission issues, incorrect path, or exceeding the maximum number of backups or maximum file size.

Note: You can adjust the options MaxSize, MaxBackups, MaxAge, and Compress according to your requirements.