Docker 容器日志格式化
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 容器日志格式化的更多相关文章
- docker 容器日志集中 ELK + filebeat
docker 容器日志集中 ELK ELK 基于 ovr 网络下 docker-compose.yaml version: '2' networks: network-test: external: ...
- docker容器日志收集方案汇总评价总结
docker日志收集方案有太多,下面截图罗列docker官方给的日志收集方案(详细请转docker官方文档).很多方案都不适合我们下面的系列文章没有说. 经过以下5篇博客的叙述简单说下docker容器 ...
- docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)
与方案一一样都是把日志输出到本地文件系统使用filebeat进行扫描采集 不同的是输出的位置是不一样的 我们对docker进行如下设置 sudo docker service update --lo ...
- docker容器日志收集方案(方案一 filebeat+本地日志收集)
filebeat不用多说就是扫描本地磁盘日志文件,读取文件内容然后远程传输. docker容器日志默认记录方式为 json-file 就是将日志以json格式记录在磁盘上 格式如下: { " ...
- 实时查看docker容器日志
实时查看docker容器日志 $ sudo docker logs -f -t --tail 行数 容器名 例:实时查看docker容器名为s12的最后10行日志 $ sudo docker logs ...
- docker容器日志清理
1.先查看磁盘空间 df -h 2.找到容器的containerId-json.log文件,并清理(治标不治本,log迟早还会大的) 查看各个容器的log文件大小 find /var/lib/dock ...
- Docker容器日志查看与清理(亲测有效)
https://blog.csdn.net/yjk13703623757/article/details/80283729 1. 问题 docker容器日志导致主机磁盘空间满了.docker logs ...
- docker 容器 日志占用空间过大问题处理
docker 容器 日志占用空间过大问题处理 # 2017 10 09 优化docker 运行产生的日志 path=/var/lib/docker/containers/ cd $path for f ...
- 解决docker容器日志导致主机磁盘空间满了的情况
日志文件在 /var/lib/docker/containers/<docker_container_id>/ 目录下 查看日志大小 vim /opt/docker_log_siz ...
随机推荐
- 关于js中close()方法的兼容性问题
在Firefox中使用close()方法无法关闭窗前窗口 控制台会输出 “脚本不得关闭非脚本打开的窗口.” 解决办法:在浏览器地址栏中输入 about:config 在配置列表中找到 dom.a ...
- WebStorm 配置微信小程序开发 用html样式打开wxml 用css样式打开wxss 配置微信小程序提醒
1.点开preferences 2.搜索找到“File Types” 3.找到"HTML",点击“+”按钮,添加“*.wxml”然后“apply” 4.和3一样,再找到 ‘casc ...
- JSON.Net 自定义Json序列化时间格式
JSON.Net 自定义Json序列化时间格式 Intro 和 JAVA 项目组对接,他们的接口返回的数据是一个json字符串,里面的时间有的是Unix时间戳,有的是string类型,有的还是空,默认 ...
- MongoDB分片 在部署和维护管理 中常见事项的总结
分片(sharding)是MongoDB将大型集合分割到不同服务器(或者说集群)上所采用的方法,主要为应对高吞吐量与大数据量的应用场景提供了方法. 和既有的分库分表.分区方案相比,MongoDB的最大 ...
- c/c++ 多线程 std::lock
多线程 std::lock 当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个.同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁...) 额外说明: ...
- Hive的命名空间
Hive的命名空间分为:hiveconf , system, env 和 hivevar 1.hiveconf 的命名空间指的是hive-site.xml下面配置的环境变量 2.system的命名空间 ...
- Java 集合系列(一)
Java集合系列文章将以思维导图为主要形式来展示知识点,让零碎的知识形成体系. 这篇文章主要介绍的是[Java 集合的基本知识],即Java 集合简介. 毕业出来一直使用 PHP 进行开发,对于大学所 ...
- 【Python 补充01】Python运算符
Python运算符 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. 1.算术运算符 + - * / # 加减乘除 % # 取模(返回除 ...
- 【Python 03】程序设计与Python语言概述
人生苦短,我用Python. Python在1990年诞生于荷兰,2010年Python2发布最后一版2.7,Python核心团队计划在2020年停止支持 Python2,目前Python3是未来. ...
- cpu iowait高排查的case
在之前的常见的Java问题排查方法一文中,没有写cpu iowait时的排查方法,主要的原因是自己之前也没碰到过什么cpu iowait高的case,很不幸的是在最近一周连续碰到了两起cpu iowa ...