فهرست منبع

transfer logs: add error field

Fixes #1638

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
Nicola Murino 1 سال پیش
والد
کامیت
9c775e2213
2فایلهای تغییر یافته به همراه9 افزوده شده و 4 حذف شده
  1. 7 2
      internal/common/transfer.go
  2. 2 2
      internal/logger/logger.go

+ 7 - 2
internal/common/transfer.go

@@ -352,6 +352,9 @@ func (t *BaseTransfer) checkUploadOutsideHomeDir(err error) int {
 	if err == nil {
 	if err == nil {
 		return 0
 		return 0
 	}
 	}
+	if t.ErrTransfer == nil {
+		t.ErrTransfer = err
+	}
 	if Config.TempPath == "" {
 	if Config.TempPath == "" {
 		return 0
 		return 0
 	}
 	}
@@ -410,7 +413,8 @@ func (t *BaseTransfer) Close() error {
 	var uploadFileSize int64
 	var uploadFileSize int64
 	if t.transferType == TransferDownload {
 	if t.transferType == TransferDownload {
 		logger.TransferLog(downloadLogSender, t.fsPath, elapsed, t.BytesSent.Load(), t.Connection.User.Username,
 		logger.TransferLog(downloadLogSender, t.fsPath, elapsed, t.BytesSent.Load(), t.Connection.User.Username,
-			t.Connection.ID, t.Connection.protocol, t.Connection.localAddr, t.Connection.remoteAddr, t.ftpMode)
+			t.Connection.ID, t.Connection.protocol, t.Connection.localAddr, t.Connection.remoteAddr, t.ftpMode,
+			t.ErrTransfer)
 		ExecuteActionNotification(t.Connection, operationDownload, t.fsPath, t.requestPath, "", "", "", //nolint:errcheck
 		ExecuteActionNotification(t.Connection, operationDownload, t.fsPath, t.requestPath, "", "", "", //nolint:errcheck
 			t.BytesSent.Load(), t.ErrTransfer, elapsed, t.metadata)
 			t.BytesSent.Load(), t.ErrTransfer, elapsed, t.metadata)
 	} else {
 	} else {
@@ -431,7 +435,8 @@ func (t *BaseTransfer) Close() error {
 		t.updateQuota(numFiles, uploadFileSize)
 		t.updateQuota(numFiles, uploadFileSize)
 		t.updateTimes()
 		t.updateTimes()
 		logger.TransferLog(uploadLogSender, t.fsPath, elapsed, t.BytesReceived.Load(), t.Connection.User.Username,
 		logger.TransferLog(uploadLogSender, t.fsPath, elapsed, t.BytesReceived.Load(), t.Connection.User.Username,
-			t.Connection.ID, t.Connection.protocol, t.Connection.localAddr, t.Connection.remoteAddr, t.ftpMode)
+			t.Connection.ID, t.Connection.protocol, t.Connection.localAddr, t.Connection.remoteAddr, t.ftpMode,
+			t.ErrTransfer)
 	}
 	}
 	if t.ErrTransfer != nil {
 	if t.ErrTransfer != nil {
 		t.Connection.Log(logger.LevelError, "transfer error: %v, path: %q", t.ErrTransfer, t.fsPath)
 		t.Connection.Log(logger.LevelError, "transfer error: %v, path: %q", t.ErrTransfer, t.fsPath)

+ 2 - 2
internal/logger/logger.go

@@ -203,7 +203,7 @@ func ErrorToConsole(format string, v ...any) {
 
 
 // TransferLog logs uploads or downloads
 // TransferLog logs uploads or downloads
 func TransferLog(operation, path string, elapsed int64, size int64, user, connectionID, protocol, localAddr,
 func TransferLog(operation, path string, elapsed int64, size int64, user, connectionID, protocol, localAddr,
-	remoteAddr, ftpMode string,
+	remoteAddr, ftpMode string, err error,
 ) {
 ) {
 	ev := logger.Info().
 	ev := logger.Info().
 		Timestamp().
 		Timestamp().
@@ -219,7 +219,7 @@ func TransferLog(operation, path string, elapsed int64, size int64, user, connec
 	if ftpMode != "" {
 	if ftpMode != "" {
 		ev.Str("ftp_mode", ftpMode)
 		ev.Str("ftp_mode", ftpMode)
 	}
 	}
-	ev.Send()
+	ev.AnErr("error", err).Send()
 }
 }
 
 
 // CommandLog logs an SFTP/SCP/SSH command
 // CommandLog logs an SFTP/SCP/SSH command