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. 万能pb_ds头文件—bits/extc++.h

    c++中自带了一些非常强大却鲜为人知的功能库—pd_ds库 里面含有红黑树(rb_tree),哈希表(gp_hash_table),可持久化平衡树(rope)等超强数据结构 但是有一件非常令人头痛的事 ...

  2. 【代码笔记】Web-CSS-CSS id和Class选择器

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. Xaramin IOS 开发常见问题

    调试时提示找不到obj某某文件,勾选后编译,再取消勾选后再次调试 APP不能上网(而且无法通过配置允许上网的APP,因为根本 找不到需要的APP),不要使用IOS11测试版本,自动禁网 截图路径 %U ...

  4. javaweb登陆过滤器实现

    在web.xml中配置登陆过滤器: <!-- 配置登陆过滤器 --> <filter> <filter-name>loginFilter</filter-na ...

  5. iPad----------教你如何查询ipad型号

    1.首先进入苹果官网 找到support    https://support.apple.com 2.找到查询ipad型号的地方  点击Check  coverage for your produc ...

  6. JavaBean到JSon格式的转换例子的代码

    内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...

  7. ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门

    一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...

  8. MongoDB分片 在部署和维护管理 中常见事项的总结

    分片(sharding)是MongoDB将大型集合分割到不同服务器(或者说集群)上所采用的方法,主要为应对高吞吐量与大数据量的应用场景提供了方法. 和既有的分库分表.分区方案相比,MongoDB的最大 ...

  9. AngularJS学习之旅—AngularJS SQL(十二)

    一.使用 PHP 从 MySQL 中获取数据 <div ng-app="myApp" ng-controller="customersCtrl"> ...

  10. iOS MVVM架构总结

    为什么使用MVVM iOS中,我们使用的大部分都是MVC架构.虽然MVC的层次明确,但是由于功能日益的增加.代码的维护,使得更多的代码被写在了Controller中,这样Controller就显得非常 ...