delayed_job protokolliert nicht

7

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.

    
freedrull 29.02.2012, 22:36
quelle

4 Antworten

16

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.

    
iltempo 11.03.2012, 23:38
quelle
10

In RAILS_ROOT / config / initializers haben Sie eine Datei namens delayed_job_config.rb mit folgenden Zeilen:

%Vor%

Denken Sie daran, Ihre Mitarbeiter nach diesem Vorgang neu zu starten.

Lass es mich wissen, wenn das hilft

    
raghus 13.03.2012 22:34
quelle
3

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%     
TomDunning 12.03.2012 09:21
quelle
0

Das funktioniert in Rails 3.2 gut für mich:

%Vor%     
thisisbrians 09.10.2013 11:14
quelle