#-----------------------------------------------------------------
#判断是否闰年
#input:year
#output: "true" "fase"
check_leap()
{
Y=`expr substr $1 1 4`
r1=`expr $Y \% 4`
r2=`expr $Y \% 100`
r3=`expr $Y \% 400`
if [ "$r1" -eq 0 -a "$r2" -ne 0 -o "$r3" -eq 0 ];then
FRUN="true"
else
FRUN="false"
fi
echo $FRUN
}
#-----------------------------------------------------------------
# 获取月份最大日期
#方法1
get_mon_days()
{
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
case "$M" in
01|03|05|07|08|10|12) days=31;;
04|06|09|11) days=30;;
02)
_tmpStr=`check_leap "$Y"` #判断是否闰年
if [ "$_tmpStr" = "true" ] ; then
#闰年
days=29
else
days=28
fi
;;
*)
days=0
;;
esac
echo $days
}
#-----------------------------------------------------------------
check_date()
{
#检查是否传入一个参数
[ $# -ne 1 ] && return 1
#检查字符串长度
_lenStr=`expr length "$1"`
[ "$_lenStr" -ne 8 ] && return 1
#检查是否输入的是非0开头的数字
_tmpStr=`echo "$1" | grep "^[^0][0-9]*$"`
[ -z "$_tmpStr" ] && return 1
Y=`expr substr $1 1 4`
M=`expr substr $1 5 2`
D=`expr substr $1 7 2`
#检查月份
[ "$M" -lt 1 -o "$M" -gt 12 ] && return 1
#取当月天数
days=`get_mon_days "$Y$M"`
#检查日
[ "$D" -lt 1 -o "$D" -gt "$days" ] && return 1
return 0
}
# -----------------------------------------------------------------------------
# 脚本说明:
# 错误统计脚本
# 生成1.原始数据文件:errorReport.txt.yyyy-MM-dd
# 2.错误类型数据文件:errorReportType.txt.yyyy-MM-dd
# -----------------------------------------------------------------------------
# 参数1:统计日期,格式yyyyMMdd,为空则为当天
# 参数2:日志文件路径,为空默认当前目录
# 参数3:生成数据文件路径,为空默认当前目录
# -----------------------------------------------------------------------------
#!/bin/sh
if [ -n "$1" ]; then
check_date $1
if [ $? -eq 1 ];then
echo "<ERROR>输入日期[$1]格式错误!示例:(`date +%Y%m%d`)"
exit 1
fi
dt=$1
else
dt=`date +'%Y%m%d'`
fi
if [ -n "$2" ]; then
srcPath=$2
else
srcPath=.
fi
if [ -n "$3" ]; then
targetPath=$3
else
targetPath=.
fi
# 日志文件
logFile=${srcPath}/UpopWeb.log.$dt*
# 生成的文件名,以yyyy-MM-dd结尾
formattedDate=${dt:0:4}-${dt:4:2}-${dt:6:2}
# 错误数据文件
errorReportFile=${targetPath}/errorReport.txt.$formattedDate
# 错误类型文件
errorReportTypeFile=${targetPath}/errorReportType.txt.$formattedDate
echo "<info>报文错误统计开始,日志文件:["$logFile"]"
# 判断文件是否存在
if (ls $logFile) >/dev/null 2>&1;then
# 开始统计时间
date_start=$(date +%s)
# 统计原始表数据
# 生成数据格式为:
grep "=== OrderInfo Start ===" -A9 $logFile|
grep "com.unionpay.upop.web.exceptions.ValidationException" -B8|
awk 'BEGIN{FS="\n";RS="--\n"}{print $1,":" ,$2,":",$3,":",$4,":",$5,":",$6,":",$7,":",$9}'|
awk -F ':' '{print $17,"|", $2,"|null|",$4,"|",$6,"|",$8,"|",$10,"|",$12,"|",$14,":",$15}'|
awk '{gsub(/[ \t\n\r]/,"")}{print $1}'|
awk -v var="$formattedDate" '{print $1"|"var}'>$errorReportFile
echo "<info>原始表数据文件生成完毕,路径:["$errorReportFile"]"
# 统计错误类型
createTime=`date +%Y-%m-%d\ %H:%M:%S`
grep "=== OrderInfo Start ===" -A9 $logFile|
grep "com.unionpay.upop.web.exceptions.ValidationException"|
awk -v var="$createTime" -F ": " '{print $2"|"var}'|
sort | uniq >$errorReportTypeFile
echo "<info>错误类型数据文件生成完毕,路径:["$errorReportTypeFile"]"
else
echo "<error>["$logFile"]不存在"
fi
date_end=$(date +%s)
echo "<info>["$dt"]报文错误统计完毕,执行时间:$((date_end-date_start))秒"
分享到:
相关推荐
Python多线程超大日志文件解析转储,实现几十G超大文件并发处理。 实现功能如下: 1.多线程分块解析某超大日志文件,实现超大文件多线程分块处理 2.多线程写入数据到数据库postgresql/mysql 3.线程之间通过队列queue...
初始化,把当前对象设置成UncaughtExceptionHandler处理器,处理异常时我们还可以把异常信息写入文件,以供后来分析。 保存错误信息到文件中 返回文件名称,我们定义了saveCrashInfo2File(Throwable ex)...
内容概要: 上述代码演示了如何使用C语言进行文件的基本读写操作。...日志记录:将程序运行时的信息记录到文件中,以便后续分析和调试。 文件内容处理:如读取文本文件内容,进行编辑、搜索、替换等操作。
shell 处理apache日志入库 awk分析apache日志为*.sql文件 sqlplus写入oracle
完整实现ftp上传与下载并解析csv文件,并实现对文件内容进行分析及错误信息的提示及保存日志,并可以实现多个文件同时下载,并且同时解析
这个配置文件用于通过 logstash 解析Palo Alto Networks(PAN-OS)防火墙产生的Syslog日志,并将其转换为结构化的数据格式以便于后续处理和分析。 这个配置文件提供了以下功能: 1. 解析Palo Alto Networks(PAN-...
“FileCut”是一款免费软件,并且不带任何插件,它适用于以下操作系统: Windows 2000、Windows XP、Windows 2003 Windows Vista、Windows 2008、Windows 7 ...价值段的日志,从而提升日志分析和问题定位效率。
内存,并被当作文件分析。因此,以下例子: FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 会枚举当前环境中的环境变量名称。 另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I - ...
主要介绍了Python实现监控程序执行时间并将其写入日志的方法,实例分析了Python日志操作的相关技巧,需要的朋友可以参考下
开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 ...
场景二:代替输出函数打印一些数据,例如在支付的回调里面不好用echo、var_dump等直观地打印数据出来,就要用到写入文件来记录数据的方式,可以用于排除错误等。 记录当前时间,写入文件: 使用file_put_contents...
日志文件满而造成SQL数据库无法写入文件时,可用两种方法: 一种方法:清空日志。 1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG 2.再打开企业管理器–右键你要压缩的数据库–所有任务–...
2.python日志产生器测试并将日志写入到文件中 3.通过定时调度工具每一分钟产生一批数据 4.使用flume实时收集日志信息 5.对接实时数据到kafka并输出到控制台 6.spark streaming对接kafka的数据进行消费 数据采集详情...
为空的记录,需要写入到日志文件中! 任务分工 1. 使用多进程技术,每一个进程读取一个txt文件 2. 使用协程技术,批量读取txt文件记录。比如一次性读取 2000条记录 注意:打开文件操作,最好在一个进程中,重复打开...
一个日志上报收集服务, 可以收集从浏览器/js/android/ios等通过http上报的日志, 落地为文本文件, 用作后续日志统计/分析/数据挖掘等 A http json logger, implemented by golang. Just dump ...
由于网上常用的分析日志工具不能 满足要求 自己写的分析工具也不能满足在特殊情况下的要求 所以写了一个导入数据库的工具,只支持w3c格式的日志 日志编码必须是gbk如果是utf-8的 里面的中文会出错 所有字段写入...
这个程序主要适用于需要处理大量文本数据的场景,例如日志分析、文本挖掘等。通过使用这个程序,用户可以更方便地管理和处理大量的文本数据,提高工作效率。该程序使用了Python的内置库,如os、sys等,实现了对文件...
基于java+TCPIP课设简单网络嗅探器...用命令行执行,显示相关结果并将数据写入日志文件。如运行Sniffer logfile;其中Sniffer是程序名,logfile表示捕获结果写入的日志文件名。或在此基础上用图形化界面实现上述功能。
此过程解析 Quake3 专用服务器日志文件,分析条目并将它们写入数据库。 它是用 Python2.7 编写和测试的 Frontend 是一个完全编写的 Webfrontend,用于以漂亮的形式获取数据库内容。 有关详细信息,请阅读前端目录...
本实验的目标是捕获网络中的IP数据包,解析数据包的内容,见个结果显示在标准输出上,并同时写入日志文件。 程序的具体要求如下: 以命令行形式运行:ipparse logfile,其中ipparse是程序名,而logfile则代表记录...