@@ -32,9 +32,31 @@ func init() {
3232 var err error
3333 fileOnly := false
3434
35- if f , err = createLoggerFile (); err != nil {
36- slog .Error ("Unable to create logger file" , "error" , err )
37- os .Exit (1 )
35+ // TempDir returns the default directory to use for temporary files.
36+ //
37+ // On Unix systems, it returns $TMPDIR if non-empty, else /tmp.
38+ // On Windows, it uses GetTempPath, returning the first non-empty
39+ // value from %TMP%, %TEMP%, %USERPROFILE%, or the Windows directory.
40+ // On Plan 9, it returns /tmp.
41+ // It does not guarantee the user can write to the directory;
42+ userTempDir := os .TempDir ()
43+ if f , err = createLoggerFile (userTempDir ); err != nil {
44+ if ! strings .Contains (err .Error (), "permission denied" ) {
45+ slog .Error ("Unable to create logger file" , "error" , err )
46+ os .Exit (1 )
47+ }
48+
49+ // If we can't write to the temp dir, try the user home dir
50+ userTempDir , err = os .UserHomeDir ()
51+ if err != nil {
52+ slog .Error ("Unable to get user home directory" , "error" , err )
53+ os .Exit (1 )
54+ }
55+
56+ if f , err = createLoggerFile (userTempDir ); err != nil {
57+ slog .Error ("Unable to create logger file in user home directory" , "error" , err )
58+ os .Exit (1 )
59+ }
3860 }
3961
4062 env := os .Getenv ("ENV" )
@@ -62,24 +84,15 @@ func init() {
6284 slog .SetDefault (slog .New (loggerHandler ))
6385}
6486
65- func createLoggerFile () (* os.File , error ) {
87+ func createLoggerFile (userTempDir string ) (* os.File , error ) {
6688 now := time .Now ()
6789 date := fmt .Sprintf ("%s.log" , now .Format ("2006-01-02" ))
6890
69- // TempDir returns the default directory to use for temporary files.
70- //
71- // On Unix systems, it returns $TMPDIR if non-empty, else /tmp.
72- // On Windows, it uses GetTempPath, returning the first non-empty
73- // value from %TMP%, %TEMP%, %USERPROFILE%, or the Windows directory.
74- // On Plan 9, it returns /tmp.
75- userTempDir := os .TempDir ()
76- slog .Debug ("createLoggerFile:" , "userTempDir" , userTempDir )
77-
78- if err := os .MkdirAll (path .Join (userTempDir , "sesh" ), 0755 ); err != nil {
91+ if err := os .MkdirAll (path .Join (userTempDir , ".seshtmp" ), 0755 ); err != nil {
7992 return nil , err
8093 }
8194
82- fileFullPath := path .Join (userTempDir , "sesh " , date )
95+ fileFullPath := path .Join (userTempDir , ".seshtmp " , date )
8396 file , err := os .OpenFile (fileFullPath , os .O_RDWR | os .O_CREATE | os .O_APPEND , 0666 )
8497 if err != nil {
8598 return nil , err
0 commit comments