Possiedo un'applicazione basata su Rails 3.2 che utilizza Sidekiq 2.12 per eseguire processi in background. I lavori di Sidekiq possono chiamare gli stessi metodi dell'app interattiva Rails. Vorrei che i metodi per accedere al log Sidekiq quando chiamato da Sidekiq e accedere al log Rails quando chiamato da Rails. Sto cercando un modo pulito per farlo, ma finora sono uscito vuoto.Accedere a un altro registratore in base alla chiamata da Sidekiq o Rails
In entrambi gli ambienti, sia Sidekiq::Logging.logger
sia Rails.logger
sono definiti e funzionano.
- Non voglio ispezionare lo stack di chiamate ad ogni tentativo di registrazione per scegliere il logger giusto.
- Non voglio passare un oggetto log come parametro di funzione a tutte le funzioni che potrebbero essere chiamate da Sidekiq e Rails.
Penso che probabilmente la cosa giusta da fare è quello di avere Sidekiq sostituire il registratore Rails con il suo registratore durante il processo di avvio e poi sempre accedere al logger di Rails, ma non riesco a trovare un gancio di inizializzazione che viene eseguito dopo il logger Rails è impostato ma prima che i lavori di Sidekiq siano avviati e sia eseguito solo da Sidekiq.
C'è un tale gancio? Se è così, per favore parlamene. In caso contrario, fornire altri suggerimenti su come reindirizzare in modo pulito l'output di registrazione in base all'ambiente operativo Sidekiq vs Rails.
Per quanto posso dire, ciò farà sì che l'app Rails utilizzi anche il logger Sidekiq. Voglio che l'app Rail (che risponde alle richieste web) si colleghi al logger Rails e ai processi Sidekiq per accedere al logger Sidekiq. –
Non è corretto. Il blocco passato alla chiamata Sidekiq.configure_server viene eseguito solo all'interno del componente Server del back-end Sidekiq, non all'interno del client in esecuzione nel server o console dell'app Rails. – Winfield