force enable asynchronous I/O sending events to Fluentd

This commit is contained in:
Konstantin Lebedev 2021-12-13 13:39:39 +05:00
parent 4f98553ba9
commit 34779e8f38
2 changed files with 10 additions and 6 deletions

View file

@ -261,7 +261,7 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h
}
if auditLog != nil {
auditLog.Key = entryName
go s3err.PostAccessLog(*auditLog)
s3err.PostAccessLog(*auditLog)
}
}

View file

@ -67,6 +67,12 @@ func InitAuditLog(config string) {
if len(fluentConfig.TagPrefix) == 0 && len(environment) > 0 {
fluentConfig.TagPrefix = environment
}
fluentConfig.Async = true
fluentConfig.AsyncResultCallback = func(data []byte, err error) {
if err != nil {
glog.Warning("Error while posting log: ", err)
}
}
var err error
Logger, err = fluent.New(*fluentConfig)
if err != nil {
@ -162,11 +168,9 @@ func PostLog(r *http.Request, HTTPStatusCode int, errorCode ErrorCode) {
if Logger == nil {
return
}
go func(log *AccessLog) {
if err := Logger.Post(tag, *log); err != nil {
glog.Warning("Error while posting log: ", err)
}
}(GetAccessLog(r, HTTPStatusCode, errorCode))
if err := Logger.Post(tag, *GetAccessLog(r, HTTPStatusCode, errorCode)); err != nil {
glog.Warning("Error while posting log: ", err)
}
}
func PostAccessLog(log AccessLog) {