当前位置:Home-FurnishingsHome

查看服务器后(繁体:後)台日志命令

2025-03-02 04:45:18Home-FurnishingsHome

如何通过web页面方式动态查看服务器日志信息?回答在部署状态页面点击查看日志,将会打开日志页面,下个图就是日志的输出页面。简约时尚小清新的日志页面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮

如何通过web页面方式动态查看服务器日志信息?

回答

在部《读:bù》署状态页面点击查看日志,将会打开日志页面,下个图(繁体:圖)就是日志的输出页(繁体:頁)面。

简约时尚小清新的日志【练:zhì】页[繁体:頁]面出来了,是不是很想一个terminal,有没有觉得俺弄的页面很漂亮。哈哈哈哈,写不好前端的运维不是好DBA。

刚[繁:剛]开始拿到这个需求,咋(读:zǎ)觉得很难。因为[拼音:wèi]在服务器上我们看一个日志,经常会tail -f 看着刷屏的感觉倍爽。如何在web页面上实现tailf的效果呢?

亚博体育

后来想xiǎng 想这样实现是可行的。前端写一个js定时器,不断的发ajax请求到后台,每回取出一段日志。后台取日志可以直接调用系统命令,或者直接调取shell脚本,取日志,判断日志文件是否存在《pinyin:zài》,是否为空,返回数据的起始位置等,都可以交给shell来做。事实上我就是这么干的

后台程序写一堆{拼音:duī}shell命令调用有点别扭。想到解决方案之后[hòu],实现的过程就比较简单了。我的开发环境{拼音:jìng}是基于python的Django框架来做的,现在就展示这个功能的实现过程。

Django部分(pinyin:fēn)

点击查看日志(繁体:誌)的链接之后会调到views里的ajxGetLog方法,该方法需要两《繁:兩》个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。

execcommand是封装的一个subprocess.Popen的一个[繁:個]工具函数,返回一个列表分别(繁:彆)是标准输出,错误输出和[hé]shell returncode

def ajxGetLog(request,pid,hid):

project = Project.objects.get(pk=pid)

host = Host.objects.get(pk=hid)

scriptname = "%s%s"%(base_path,"get_log.sh")

res = execcommand(["sh",scriptname,host.hostname,project.servicename])

#如果错误输出(繁体:齣)不为空,直接返回错误输出

if not res[1]:

世界杯

#res[0]为[繁体:爲]行号,如果大于20行,从当前行的上面20行开(kāi)始(pinyin:shǐ)输出,为了用户体验,你懂得

if int(res[0]) > 20:

line = int(res[0]) - 20

if int(res[0]) == 0:

line = 1

澳门巴黎人

澳门新葡京

极速赛车/北京赛车

澳门永利

print e

乐鱼体育

return HttpResponse(e)

else:

澳门金沙

return HttpResponse(res[1])

html部[练:bù]分首席写一个ajax请求,传递到后台取日志内容的方法,传递三个参数项目id,主机id,和行号,后台将会返回对应《繁:應》行号的日志内容。该(繁体:該)方法代码如下:

def ajxGetLogHandle(request,pid,hid,line):

澳门金沙

host = Host.objects.get(pk=hid)

scriptname = "%s%s"%(base_path,"get_log.sh")

澳门新葡京

if not res[1] and res[0].strip():

return HttpResponse(res[0])

else:

return HttpResponse(500)

本文链接:http://10.21taiyang.com/Home-FurnishingsHome/21837450.html
查看服务器后(繁体:後)台日志命令转载请注明出处来源