file_write.go 778 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package filehelper
  2. import (
  3. log "github.com/sirupsen/logrus"
  4. "os"
  5. "sync"
  6. )
  7. var writeFileMutex sync.Mutex
  8. func WriteFile(filename string, out []byte) {
  9. writeFileMutex.Lock()
  10. defer writeFileMutex.Unlock()
  11. if _, err := os.Stat(filename); os.IsNotExist(err) {
  12. handle, err := os.Create(filename)
  13. if err != nil {
  14. log.WithFields(log.Fields{
  15. "error": err,
  16. }).Errorf("Failed to create %v", filename)
  17. return
  18. }
  19. if err := handle.Close(); err != nil {
  20. log.WithFields(log.Fields{
  21. "error": err,
  22. "filename": filename,
  23. }).Errorf("Failed to close %v", filename)
  24. }
  25. }
  26. err := os.WriteFile(filename, out, 0600)
  27. if err != nil {
  28. log.WithFields(log.Fields{
  29. "error": err,
  30. }).Errorf("Failed to write session to %v", filename)
  31. return
  32. }
  33. }