diff --git a/klog.go b/klog.go index 026be9e3..23f92e33 100644 --- a/klog.go +++ b/klog.go @@ -1223,11 +1223,14 @@ func StartFlushDaemon(interval time.Duration) { // lockAndFlushAll is like flushAll but locks l.mu first. func (l *loggingT) lockAndFlushAll() { l.mu.Lock() + // Write the klog buffer into the kernel buffer l.flushAll() l.mu.Unlock() + // Write the kernel buffer to disk + l.syncAll() } -// flushAll flushes all the logs and attempts to "sync" their data to disk. +// FlushAll flushes all the logs // l.mu is held. func (l *loggingT) flushAll() { // Flush from fatal down, in case there's trouble flushing. @@ -1235,7 +1238,6 @@ func (l *loggingT) flushAll() { file := l.file[s] if file != nil { _ = file.Flush() // ignore error - _ = file.Sync() // ignore error } } if logging.loggerOptions.flush != nil { @@ -1243,6 +1245,17 @@ func (l *loggingT) flushAll() { } } +// Attempts to "sync" their data to disk. +func (l *loggingT) syncAll() { + // Sync from fatal down + for s := severity.FatalLog; s >= severity.InfoLog; s-- { + file := l.file[s] + if file != nil { + _ = file.Sync() // ignore error + } + } +} + // CopyStandardLogTo arranges for messages written to the Go "log" package's // default logs to also appear in the Google logs for the named and lower // severities. Subsequent changes to the standard log's default output location