1

当上帝重新启动进程时,是否可以执行自定义代码。请参阅下面的示例,了解我的意思。当 watch 从 :up 转换到 :start (进程重新启动)时,我们希望在 :error 级别向 syslog 发送日志。applog是 God 模块中定义的方法。

w.transition(:up, :start) do |on|
  applog(w, :error, "critical server process exited")
  on.condition(:process_exits) do |c|
    c.notify = 'alerts'
  end
end

目前,加载手表配置时,我在 syslog 中看到消息。在某个转换时,我还能如何在 syslog 中记录错误?

4

1 回答 1

0

我尝试通过定义一个联系人并通过 God.contact() 加载来在上帝中添加一个新联系人。遇到缺少名称等错误。不知道如何注册。更好的方法是分叉 gem 并添加一个新的联系人,但这意味着我们的基础设施会发生很大变化。下面的方法是我现在最终使用的方法......涉及猴子修补。

module God
  class Task
    alias gods_notify notify
    def notify(condition, message)
      applog(nil, :error, "@cee: {\"alert\": \"true\", \"category\": \"alert.#{condition.to_s}\", \"content\": \"#{message}\"}")
      gods_notify(condition, message)
    end
  end
end
于 2014-12-04T15:04:55.120 回答