package main import ( "archive/zip" "io" "log" "os" ) func createLogger(logDir string, verbose bool) (*log.Logger, *log.Logger, *log.Logger) { logFile, err := os.OpenFile(logDir+"/dci_support_info.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Println("Failed to open log file:", err) logInfo := log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile) logWarn := log.New(os.Stdout, "WARN: ", log.Ldate|log.Ltime|log.Lshortfile) logErr := log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) return logInfo, logWarn, logErr } else { if verbose { mw := io.MultiWriter(os.Stdout, logFile) mwErr := io.MultiWriter(os.Stderr, logFile) log.SetOutput(mw) logInfo := log.New(mw, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile) logWarn := log.New(mw, "WARN: ", log.Ldate|log.Ltime|log.Lshortfile) logErr := log.New(mwErr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) return logInfo, logWarn, logErr } else { log.SetOutput(logFile) logInfo := log.New(logFile, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile) logWarn := log.New(logFile, "WARN: ", log.Ldate|log.Ltime|log.Lshortfile) logErr := log.New(logFile, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) return logInfo, logWarn, logErr } } } func addToArchive(zipWriter *zip.Writer, filename string) error { fileToZip, err := os.Open(filename) if err != nil { return err } defer fileToZip.Close() w, err := zipWriter.Create(filename) if err != nil { return err } if _, err := io.Copy(w, fileToZip); err != nil { return err } return nil }