Docker容器的日志文件每一行都是一个json对象,其包含log、stream、time三个属性,下面的HTML从textarea中读取输入的日志信息,格式化为表格显示。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Docker 容器日志格式化</title>
<style>
body {
font-size: 12px;
font-family: consolas;
} td {
word-break: keep-all;
white-space: nowrap;
} tr, td {
padding-right: 5px;
} tr.stderr {
color: red;
} .goto-top {
position: fixed;
right: 5px;
bottom: 5px;
font-size: 24px;
opacity: 0.5;
}
</style>
</head>
<body>
<div id="top"></div>
<div>
<div>
<textarea id="logs-text"></textarea>
</div>
<div>
<button onclick="format();">格式化</button>
<button onclick="empty();">清空</button>
</div>
</div>
<table>
<thead>
<tr>
<th>行号</th>
<th>时间</th>
<th align="left">日志信息</th>
</tr>
</thead>
<tbody id="logs-tbody"><![data]></tbody>
</table>
<div class="goto-top"><a href="#top">回顶部</a></div>
</body>
<script> function format() {
document.getElementById("logs-tbody").innerHTML = null;
var text = document.getElementById("logs-text").value;
var textArr = text.split("\n");
for (var i = 0; i < textArr.length; i++) {
var logJson = textArr[i].trim();
if (logJson != "") {
try {
var json = JSON.parse(logJson);
} catch (e) {
var errorInfo = "第" + (i + 1) + "行:[" + logJson + "]语法不对,请重新输入需要格式化的日志信息。";
console.error(errorInfo);
console.error(e);
alert(errorInfo);
break;
}
var time = new Date(json.time);
var log = json.log;
var stream = json.stream;
var timeStr = time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate()
+ " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds();
var tr = document.createElement("tr");
if (stream == "stderr") {
tr.classList.add("stderr");
}
var html = '<td>' + (i + 1) + '</td><td>' + timeStr + '</td><td>' + log + '</td>';
tr.innerHTML = html;
document.getElementById("logs-tbody").append(tr);
}
}
} function empty() {
document.getElementById("logs-text").value = null;
document.getElementById("logs-tbody").innerHTML = null;
} </script>
</html>

新建HTML文件,插入此代码即可,如果日志文件较大(建议5000行以上),请使用jar包程序

Docker 容器日志格式化的更多相关文章

  1. docker 容器日志集中 ELK + filebeat

    docker 容器日志集中 ELK ELK 基于 ovr 网络下 docker-compose.yaml version: '2' networks: network-test: external: ...

  2. docker容器日志收集方案汇总评价总结

    docker日志收集方案有太多,下面截图罗列docker官方给的日志收集方案(详细请转docker官方文档).很多方案都不适合我们下面的系列文章没有说. 经过以下5篇博客的叙述简单说下docker容器 ...

  3. docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)

    与方案一一样都是把日志输出到本地文件系统使用filebeat进行扫描采集 不同的是输出的位置是不一样的 我们对docker进行如下设置 sudo docker service update  --lo ...

  4. docker容器日志收集方案(方案一 filebeat+本地日志收集)

    filebeat不用多说就是扫描本地磁盘日志文件,读取文件内容然后远程传输. docker容器日志默认记录方式为 json-file 就是将日志以json格式记录在磁盘上 格式如下: { " ...

  5. 实时查看docker容器日志

    实时查看docker容器日志 $ sudo docker logs -f -t --tail 行数 容器名 例:实时查看docker容器名为s12的最后10行日志 $ sudo docker logs ...

  6. docker容器日志清理

    1.先查看磁盘空间 df -h 2.找到容器的containerId-json.log文件,并清理(治标不治本,log迟早还会大的) 查看各个容器的log文件大小 find /var/lib/dock ...

  7. Docker容器日志查看与清理(亲测有效)

    https://blog.csdn.net/yjk13703623757/article/details/80283729 1. 问题 docker容器日志导致主机磁盘空间满了.docker logs ...

  8. docker 容器 日志占用空间过大问题处理

    docker 容器 日志占用空间过大问题处理 # 2017 10 09 优化docker 运行产生的日志 path=/var/lib/docker/containers/ cd $path for f ...

  9. 解决docker容器日志导致主机磁盘空间满了的情况

    日志文件在   /var/lib/docker/containers/<docker_container_id>/   目录下 查看日志大小 vim /opt/docker_log_siz ...

随机推荐

  1. 树上倍增求LCA及例题

    先瞎扯几句 树上倍增的经典应用是求两个节点的LCA 当然它的作用不仅限于求LCA,还可以维护节点的很多信息 求LCA的方法除了倍增之外,还有树链剖分.离线tarjan ,这两种日后再讲(众人:其实是你 ...

  2. 基于 CODING 的 Spring Boot 持续集成项目

    本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...

  3. Registrator中文文档

    目录 快速入门 概述 准备 运行Registrator 运行Redis 下一步 运行参考 运行Registrator Docker选项 Registrator选项 Consul ACL令牌 注册URI ...

  4. EditText超出字数限制,给用户提示

    当我们在Editext输入内容的时候,检测如果超过限制的长度无法输入内容,并且给用户提示. 首先我想到了下面的方法: editText.addTextChangedListener(new TextW ...

  5. 自定义xUtils框架

    xUtils是基于Afinal开发的目前功能比较完善的一个Android开源框架,最近又发布了xUtil3.0,在增加新功能的同时又提高了框架的性能.它的功能很强大,但是有时候我们只需要其中的一些功能 ...

  6. Oracle 10g 应用补丁PSU 10.2.0.5.180717

    最近测试了一下在Oracle 10g下面(单实例下面)升级.应用补丁PSU 10.2.0.5.180717,打这个补丁的主要原因是 Oracle 将于 2019年6月启用新的SCN兼容性,并且由于Bi ...

  7. python模块(os,sys,hashlib,collections)

    列出目录下所有文件 os.listdir('dirname'):列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式返回. 创建文件夹: os.mkdir('文件夹')    创建文件夹 os ...

  8. Python列表之班荆道故

    列表list初识 列表是python的基础数据类型之一 ,它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: list列表的定义: list_ = []list_1 = [&qu ...

  9. iOS Password AutoFill开发指南

    转载请标明来源:https://www.cnblogs.com/zhanggui/p/9431950.html 引言 在<iPhone User Guide for iOS 11.4>这本 ...

  10. 在java web项目中实现随项目启动的额外操作

    前言 在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等.对于这种要求,目前个人 ...