#!/bin/bash
# replace all UTC dates to local dates in pipe
# by HuangYingNing <huangyingning at google mail system>
# install:
# git clone https://github.com/HuangYingNing/docker-logs-localtime.git /usr/local/docker-logs-localtime && ln -s /usr/local/docker-logs-localtime/docker-logs-localtime /usr/local/bin/docker-logs-localtime && chmod +x /usr/local/docker-logs-localtime/docker-logs-localtime /usr/local/bin/docker-logs-localtime
# or:
# wget -O /usr/local/bin/docker-logs-localtime https://raw.githubusercontent.com/HuangYingNing/docker-logs-localtime/master/docker-logs-localtime && chmod +x /usr/local/bin/docker-logs-localtime
# usage: docker logs -t container_name 2>&1 | docker-logs-localtime
# 2022-01-12 added colors and made it also work with docker compose (# by validr <validr at google mail system>)
date_prefix=$(date +%Y)-
DateColor='\033[0;32m' # Green
ContainerColor='\033[0;36m' # Cyan
NC='\033[0m' # No Color
while read -r f1 f2 f3 f4; do
# 2020-03-04T09:38:58.836294000Z
if [ "${f1:0:5}" == ${date_prefix} ]; then
dateLocal=$(date -d "UTC ${f1:0:4}${f1:5:2}${f1:8:2} ${f1:11:8}" '+%Y-%m-%d %H:%M:%S')${f1:19:9}
echo -e "${DateColor}${dateLocal}${NC} ${f2} ${f3} ${f4}"
elif [ "${f3:0:5}" == ${date_prefix} ]; then
dateLocal=$(date -d "UTC ${f3:0:4}${f3:5:2}${f3:8:2} ${f3:11:8}" '+%Y-%m-%d %H:%M:%S')${f3:19:9}
echo -e "${ContainerColor}${f1} ${f2}${NC} ${DateColor}${dateLocal}${NC} ${f4}"
else
echo -e "${f1} ${f2} ${f3} ${f4}"
fi
done