Refactor Logging in Mail Receiver to Use Structured Logging

- Replaced standard log statements with structured logging using the kun/log package for improved log clarity and consistency.
- Updated log messages in the MailReceiver to include contextual information, enhancing the ability to trace issues during email processing.
- This change aims to provide better insights into the email receiver's operations and error handling.
This commit is contained in:
Max 2025-12-24 09:51:05 +08:00
parent 809792c152
commit 8aa373b969

View file

@ -5,7 +5,6 @@ import (
"crypto/tls" "crypto/tls"
"fmt" "fmt"
"io" "io"
"log"
"mime" "mime"
"mime/multipart" "mime/multipart"
"net/mail" "net/mail"
@ -14,6 +13,7 @@ import (
"github.com/emersion/go-imap" "github.com/emersion/go-imap"
"github.com/emersion/go-imap/client" "github.com/emersion/go-imap/client"
"github.com/yaoapp/kun/log"
"github.com/yaoapp/yao/messenger/types" "github.com/yaoapp/yao/messenger/types"
) )
@ -118,10 +118,10 @@ func (r *MailReceiver) startReceiving(ctx context.Context) {
for retry := 0; retry < maxRetries; retry++ { for retry := 0; retry < maxRetries; retry++ {
select { select {
case <-ctx.Done(): case <-ctx.Done():
log.Println("Context cancelled, stopping email receiver") log.Info("[Messenger] Context cancelled, stopping email receiver")
return return
case <-r.stopChan: case <-r.stopChan:
log.Println("Stop signal received, stopping email receiver") log.Info("[Messenger] Stop signal received, stopping email receiver")
return return
default: default:
} }
@ -129,7 +129,7 @@ func (r *MailReceiver) startReceiving(ctx context.Context) {
// Reconnect if needed // Reconnect if needed
if r.client == nil || r.client.State() != imap.SelectedState { if r.client == nil || r.client.State() != imap.SelectedState {
if err := r.reconnect(); err != nil { if err := r.reconnect(); err != nil {
log.Printf("Failed to reconnect to IMAP server: %v", err) log.Error("[Messenger] Failed to reconnect to IMAP server: %v", err)
if retry < maxRetries-1 { if retry < maxRetries-1 {
time.Sleep(retryDelay) time.Sleep(retryDelay)
retryDelay *= 2 // Exponential backoff retryDelay *= 2 // Exponential backoff
@ -142,7 +142,7 @@ func (r *MailReceiver) startReceiving(ctx context.Context) {
// Select mailbox // Select mailbox
_, err := r.client.Select(r.provider.imapMailbox, false) _, err := r.client.Select(r.provider.imapMailbox, false)
if err != nil { if err != nil {
log.Printf("Failed to select mailbox %s: %v", r.provider.imapMailbox, err) log.Error("[Messenger] Failed to select mailbox %s: %v", r.provider.imapMailbox, err)
if retry < maxRetries-1 { if retry < maxRetries-1 {
time.Sleep(retryDelay) time.Sleep(retryDelay)
retryDelay *= 2 retryDelay *= 2
@ -266,7 +266,7 @@ func (r *MailReceiver) processNewMessages() {
uids, err := r.client.UidSearch(criteria) uids, err := r.client.UidSearch(criteria)
if err != nil { if err != nil {
log.Printf("Failed to search for new messages: %v", err) log.Error("[Messenger] Failed to search for new messages: %v", err)
return return
} }
@ -318,7 +318,7 @@ func (r *MailReceiver) processNewMessages() {
if shouldProcess { if shouldProcess {
if err := r.processMessage(msg); err != nil { if err := r.processMessage(msg); err != nil {
log.Printf("Failed to process message UID %d: %v", msg.Uid, err) log.Error("[Messenger] Failed to process message UID %d: %v", msg.Uid, err)
} else { } else {
processedCount++ processedCount++
} }
@ -331,7 +331,7 @@ func (r *MailReceiver) processNewMessages() {
} }
if err := <-done; err != nil { if err := <-done; err != nil {
log.Printf("Failed to fetch messages: %v", err) log.Error("[Messenger] Failed to fetch messages: %v", err)
return return
} }
} }