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

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

需求来源

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

ssh xx@xx.com
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

共收到 15 条回复

一般都是自己在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]'
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册