Ich kann keine Nachrichten von meinem Prozess delayed_job protokollieren. Hier ist der Job, der ausgeführt wird.
%Vor%Ich habe verschiedene Protokollierungsstufen ausprobiert, und ich habe config.log_level =: debug in meiner Umgebungskonfiguration. Ich laufe delayed_job von monit. Ich benutze delayed_job 3.0.1 mit Ruby 1.9.3 und Rails 3.0.10.
Eine Erklärung könnte sein, dass der Job nur einmal auf der Herstellerseite initialisiert wird. Dann wird es serialisiert, über die Warteschlange (z. B. Datenbank) zugestellt und im Worker unserialisiert. Die Initialisierungsmethode wird jedoch nicht erneut im Worker-Prozess aufgerufen. Nur die perform-Methode wird über send aufgerufen.
Sie können jedoch den Worker Logger wiederverwenden, um in die Protokolldatei zu schreiben:
%Vor%Vergessen Sie nicht, die Arbeiter neu zu starten.
Ich sehe nicht, warum Sie den Logger im Job einstellen würden. Wenn ich dies getan habe, setze ich den Arbeiter auf die Verwendung einer bestimmten Datei beim Start, z. Logger.new("log/worker_#{worker_number}")
, wodurch sichergestellt wird, dass jeder Worker seine eigene Datei ausgibt und Sie sich nicht darum sorgen müssen, dass mehrere Worker gleichzeitig in dieselbe Datei schreiben (unordentlich).
Auch im einfachen Ruby können Sie @logger.info "logging from delayed_job"
aufrufen.
Schließlich bin ich mir ziemlich sicher, dass "Ausführen" direkt von Ihrem Mitarbeiter aufgerufen und instanziiert wird, so dass Sie zu:
umgestalten können %Vor%Tags und Links ruby ruby-on-rails-3 ruby-on-rails background-process delayed-job