Gem 推荐一个 mina 的插件 mina-logs 给大家

lyfi2003 · 2016年05月15日 · 最后由 lyfi2003 回复于 2016年05月16日 · 3942 次阅读

需求来源

Mina 已经成为许多 Ruby on Rails 项目的发布工具,经常地,我们需要去服务器上监控日志输出,这个重复劳动有点烦。

ssh [email protected]
cd /where/project/root
tail -f current/log/production.log

开发了一个小工具 mina-logs 把这个过程简化为:

mina logs

同时,也增加了其它几个日志文件的查看命令。

功能

# production.log
$ mina logs

# unicorn.log
$ mina unicorn_logs

# puma.log
$ mina puma_logs

# sidekiq.log
$ mina sidekiq_logs

# resque.log
$ mina resque_logs

附加几个调试线上环境的技巧

# 登录到发布服务器, 并切到项目目录
mina ssh

# 登录服务器, 并给用户一个 rails c 的控制台
mina console

附:在 mina0.3.6 之后,mina log 可以直接观察 production.log, mina-logs 仍然很有价值,帮助添加了 mina logs 别名和其他 log 的观察。

欢迎关注与了解具体的使用方式: https://github.com/windy/mina-logs

一般都是自己在 deploy.rb 中写这些 rake,很实用。

怎么修改啊?

#4 楼 @15944213101 你想表达什么意思呢?

gem 'mina'
gem 'mina-sidekiq', :require => false
gem 'mina-unicorn', :require => false

关联 gem 自带的不够用?

mina log # Tail log from server mina logs:app # Shows Rails logs mina logs:sidekiq # Show Sidekiq logs mina logs:unicorn_access # Show Unicorn access logs mina logs:unicorn_error # Show Unicorn error logs

mina log 默认就有

@kikyous I knew, 一开始我就加了附录说明。你没看么。我添加了别名 mina logs, 简化记忆

@raecoo 你确认不是你自己加的 task ? 为什么我在官方仓库没有找到对应的 task.

#8 楼 @lyfi2003 很确定整个 Gemfile 里与 mina 有关的就这三行,mina -T 下其实能用的东西其实不少

#8 楼 @lyfi2003 不确定你在哪个"官方"看的,我想如果你在 mina gem task 里去找 unicorn 的显然不太对 :)

https://github.com/scarfacedeb/mina-unicorn/blob/master/lib/mina/unicorn/tasks.rb Updated: 引用链接不正确 https://github.com/Mic92/mina-sidekiq/blob/master/lib/mina_sidekiq/tasks.rb#L129

当然 deploy.rb 中少不了需要

require 'mina_sidekiq/tasks'
require 'mina/unicorn'

@raecoo Are u sure ? 你太自以为是了。你列的两个文件的 tasks 里面确定有 logs 相关的 tasks ? 我建议你去看看你项目里面 lib/tasks 或 deploy.rb 里面,看看是不是有人已经帮你写好了。

#11 楼 @lyfi2003 :) 引用的文件确实是没仔细看,是不对的。已修正。 deploy.rb 中确实加了点。

namespace :logs do
  desc "Shows Rails logs."
  task :app do
    queue %[cd #{deploy_to!} && tail -f #{shared_path}/log/production.log]
  end

  desc "Show Sidekiq logs"
  task :sidekiq do
    queue %[cd #{deploy_to!} && tail -f #{shared_path}/log/sidekiq.log]
  end

  desc "Show Unicorn error logs"
  task :unicorn_error do
    queue %[cd #{deploy_to!} && tail -f #{shared_path}/log/unicorn.error.log]
  end

  desc "Show Unicorn access logs"
  task :unicorn_access do
    queue %[cd #{deploy_to!} && tail -f #{shared_path}/log/unicorn.access.log]
  end
end

BTW: 大清早的火气还挺大,讨论问题而已,言语的攻击性不要那么强。

#12 楼 @raecoo 一上来就质疑这个 gem 的价值,最后还是自己的锅,我有点不开心是肯定的。其实我是一个很温和的人,论坛上讨论问题的口吻和风气真是让人温和不起来。你也可以自己读一下你自己的口吻是否合理。

大量的 mina 使用者都会搞个 logs 的 tasks 出来,我就是想让这个过程不那么重复而已。

之前不知道竟然还有 mina log 这个命令

刚刚更新一个版本 0.0.99, 加了一个 mina _logs[xx] 的命令支持,例如:

# tail unicorn.error.log
mina '_logs[unicorn.error]'
需要 登录 后方可回复, 如果你还没有账号请 注册新账号