如何把Tomcat的日志实时输出到Web页面上

 我来答
公子张小白
2016-08-10 · 知道合伙人教育行家
公子张小白
知道合伙人教育行家
采纳数:976 获赞数:13382
毕业于山东理工大学,有良好的英语口语以及交流能力,现从事关于英语相关的翻译以及文档整理工作。

向TA提问 私信TA
展开全部
Django部分
点击查看日志的链接之后会调到views里的ajxGetLog方法,该方法需要两个参数,项目id和主机id,这两个参数主要是用来确定日志文件的位置。该方法返回行号。
execcommand是封装的一个subprocess.Popen的一个工具函数,返回一个列表分别是标准输出,错误输出和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]:
try:
#res[0]为行号,如果大于20行,从当前行的上面20行开始输出,为了用户体验,你懂得
if int(res[0]) > 20:
line = int(res[0]) - 20
if int(res[0]) == 0:
line = 1
return render(request,'logs.html',{'pid':pid,'hid':hid,'line':line})
except Exception,e:
print e
return HttpResponse(e)
else:
return HttpResponse(res[1])
html部分首席写一个ajax请求,传递到后台取日志内容的方法,传递三个参数项目id,主机id,和行号,后台将会返回对应行号的日志内容。该方法代码如下:
def ajxGetLogHandle(request,pid,hid,line):
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,line])
if not res[1] and res[0].strip():
return HttpResponse(res[0])
else:
return HttpResponse(500)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式