6

私のschedule.rbファイルには、次の行があります。

set :output, '/log/cron_log.log'

every 5.minutes do
  command 'echo "hello"'
end

whenever -wthis question Rails で提案されているように実行し、開発中はいつでも gem を使用しました。cronfile が作成され、実行されていると仮定します。(Railsサーバーも再起動してみました。)

そして、実行する$ crontab -lと、次のように表示されます。

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash
-l -c 'echo "hello" >> /log/cron_log.log 2>&1'

しかし、ログファイルが見つかりません。rails_project/log、~/log、および /log をチェックインしましたが、役に立ちませんでした。OSXで。

ログ ファイルを rails プロジェクトのログ フォルダに書き込むにはどうすればよいですか?

4

1 に答える 1

36

ログはどこにありますか?

出力ファイルを最上位のディレクトリ レベルに置きます。

$ cd /log

ファイルが存在するかどうか、およびファイルにデータが含まれているかどうかを確認するには:

$ ls -la cron_log.log

必要に応じてログ ファイルを作成するには:

$ touch cron_log.log

独自のローカル デバッグ用のアクセス許可を開くには (本番環境ではこれを行わないでください!)

$ chmod +rw cron_log.log  

コマンドは実行されていますか?

コマンドを手動で実行して、期待どおりに動作するかどうかを確認するには:

$ /bin/bash -l -c 'echo "hello" >> /log/cron_log.log 2>&1'

セキュリティを向上させ、パスを保護するには、フル パスを使用します。

wrong: command 'echo "hello"'
right: command '/bin/echo "hello"'

コマンドのフルパスを見つけるには:

$ which echo

cron が期待どおりに実行されていることを確認するには:

$ sudo grep CRON /var/log/syslog

grep の結果には、次のような行が含まれているはずです。

Jan 1 12:00:00 example.com CRON[123]: (root) CMD (... your command here ...)

あなたはMacを使っていますか?

syslog に出力が表示されず、Mac を使用している場合は、Mac OSX の からcronへの切り替えについて読むことをお勧めしますlaunchd

cron plist (/System/Library/LaunchDaemons/com.vix.cron.plist) を参照し、stdout/stderr パスを使用して cron 自体をデバッグします。launchctl のアンロードと plist の launchctl のロードで十分かどうか、または完全に再起動する必要がある場合はシステムデーモンであるため、思い出せません。( lion の cron ログ ファイルの場所を参照してください)

Railsに関連してログを記録する方法は?

Rails アプリに関連するログを配置するには、先頭のスラッシュを省略します (通常は cron.log と呼びます)。

set :output, "log/cron.log"

ログを特定の完全修飾ディレクトリに配置するには:

set :output, '/abc/def/ghi/log/cron.log'

When wiki には、出力のリダイレクトに関する良い例がいくつかあります。

https://github.com/javan/whenever/wiki/Output-redirection-aka-logging-your-cron-jobs

例:

every 3.hours do
  runner "MyModel.some_process", :output => 'cron.log'     
  rake "my:rake:task", :output => {:error => 'error.log', :standard => 'cron.log'}
  command "/usr/bin/cmd"
end  
于 2013-01-30T21:27:02.640 に答える