如何优雅的远程查看服务器日志

server那点事

现在的情况是,需要看服务器的日志,首先要ssh连接上服务器,然后cd到项目下,$ tail -f your_log_file

如果偶尔这样那无所谓,然而现实情况是经常需要上server看日志,在没有日志收集系统的情况下,每次这么一堆操作很繁琐。

强迫症的我,只好写了一个方便干这个事情的程序,是用ruby写的,下面直接贴代码

# ~/ruby_programs/glog.rb

$time = Time.now.strftime "%Y%m%d"
$env = ARGV[1] || 'dev'

def tail_your_log1
  case $env
  when 'dev'
    system "ssh dev 'tail -f /var/www/project1/log/*#{$time}*'"
  when 'stag'
    system "ssh staging 'tail -f /var/www/project1/log/*#{$time}*'"
  else
    p 'unkown env'
  end
end

def tail_your_log2
  case $env
  when 'dev'
    system "ssh dev 'tail -f /var/www/project2/log/*#{$time}*'"
  when 'stag'
    system "ssh staging 'tail -f /var/www/project2/log/*#{$time}*'"
  else
    p 'unkown env'
  end
end

tail_your_log1 if 'proj_name1' == ARGV[0]
tail_your_log2 if 'proj_name2' == ARGV[0]

不过使用上述有个背景,把测试或者staging或者production环境的服务器添加了免密登录,同时,每天的log文件不一样,命名里含有日期,如果你当前环境的log文件只有一个,可以把time去掉。

最后,在终端配置文件里给当前文件设置alias:

$ vi ~/.bash_profile

在里面加入这一行:

alias glog="ruby ~/ruby_programs/glog.rb"

再然后,重启终端或者$ source ~/.bash_profile

如果你用的是其他shell,在对应配置文件里加上source ~/.bash_profile即可

最后使用方法:

$ glog proj_name1

$ glog proj_name2 stag

发表于 2018.06.26