diff --git a/modules/log/event_writer_file.go b/modules/log/event_writer_file.go
index 4f41b96453..fd73d7d30a 100644
--- a/modules/log/event_writer_file.go
+++ b/modules/log/event_writer_file.go
@@ -4,6 +4,8 @@
 package log
 
 import (
+	"io"
+
 	"code.gitea.io/gitea/modules/util/rotatingfilewriter"
 )
 
@@ -19,7 +21,7 @@ type WriterFileOption struct {
 
 type eventWriterFile struct {
 	*EventWriterBaseImpl
-	fileWriter *rotatingfilewriter.RotatingFileWriter
+	fileWriter io.WriteCloser
 }
 
 var _ EventWriter = (*eventWriterFile)(nil)
@@ -37,7 +39,10 @@ func NewEventWriterFile(name string, mode WriterMode) EventWriter {
 		CompressionLevel: opt.CompressionLevel,
 	})
 	if err != nil {
+		// if the log file can't be opened, what should it do? panic/exit? ignore logs? fallback to stderr?
+		// it seems that "fallback to stderr" is slightly better than others ....
 		FallbackErrorf("unable to open log file %q: %v", opt.FileName, err)
+		w.fileWriter = nopCloser{Writer: LoggerToWriter(FallbackErrorf)}
 	}
 	w.OutputWriteCloser = w.fileWriter
 	return w