66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
)
|
|
|
|
// LogConfig contiene la configuración para el sistema de logs
|
|
type LogConfig struct {
|
|
BaseDir string
|
|
BaseFilename string
|
|
MaxSize int
|
|
MaxBackups int
|
|
MaxAge int
|
|
Compress bool
|
|
}
|
|
|
|
// LoggerSystem maneja los loggers de la aplicación
|
|
type LoggerSystem struct {
|
|
Writer *lumberjack.Logger
|
|
InfoLogger *log.Logger
|
|
ErrorLogger *log.Logger
|
|
}
|
|
|
|
// Referencias a loggers globales
|
|
var (
|
|
InfoLogger *log.Logger
|
|
ErrorLogger *log.Logger
|
|
)
|
|
|
|
// NewLoggerSystem crea un nuevo sistema de logs
|
|
func NewLoggerSystem(config *LogConfig) (*LoggerSystem, error) {
|
|
// Asegurarse de que el directorio base existe
|
|
if err := os.MkdirAll(config.BaseDir, 0755); err != nil {
|
|
return nil, fmt.Errorf("error creando directorio de logs: %w", err)
|
|
}
|
|
|
|
logPath := filepath.Join(config.BaseDir, config.BaseFilename)
|
|
|
|
logWriter := &lumberjack.Logger{
|
|
Filename: logPath,
|
|
MaxSize: config.MaxSize,
|
|
MaxBackups: config.MaxBackups,
|
|
MaxAge: config.MaxAge,
|
|
Compress: config.Compress,
|
|
LocalTime: true,
|
|
}
|
|
|
|
system := &LoggerSystem{
|
|
Writer: logWriter,
|
|
InfoLogger: log.New(logWriter, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile),
|
|
ErrorLogger: log.New(logWriter, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile),
|
|
}
|
|
|
|
return system, nil
|
|
}
|
|
|
|
// Close cierra el sistema de logs
|
|
func (ls *LoggerSystem) Close() error {
|
|
return ls.Writer.Close()
|
|
}
|