任务一:将项目运行日志进行自动备份,处理后放入mongodb中。
难点:字符串切割,日期时间格式处理,linux定时任务
过程:日志处理无外乎将有效字段从非结构化的日志文本中截取出来,抽取有效信息供下一步分析使用。本项目中的日志信息其实已经相当结构化了,字符串切割里面的问题主要是一行数据切割一次无法完整的获取所有信息,需要用不同的切割方式再进行获取。
在处理切割得到的字符串时间时,遇到了一些小问题。01/Jan/2018:01:14:42 ,这个格式的文本时间,直接用simpledateformat对象按照(“yyyy/MMM/dd:HH:mm:ss”)处理时会产生异常。
Exception in thread "main" java.text.ParseException: Unparseable date: "01/Jan/2018:01:14:42 "
问题主要出现在Jan这个月份上,网上查到的资料显示这样的英文月份按照“MMM”的格式是可以解析的,但是很多博客忽略了地区位置信息,这就导致了以上异常的发生。
因此在处理此时间格式时,应该显式明确地区。SimpleDateFormat("yyyy/MMM/dd:HH:mm:ss", Locale.US);这样才会按照“MMM”去解析英文月份。
由于备份工作要长期定时运行在服务器上,每天定时处理前一天的日志。故笔者选择使用maven写了个小工程,这样既可以简化打包过程,也适合做定时任务。
在做linux定时任务时,参考了https://blog.csdn.net/nvnnv/article/details/52355681这篇博客,博主讲的比较详细了。所以问题也迎刃而解。
任务二:oracle数据定时备份到mongodb
由于项目原因,数据主要存储在oracle数据库中,老师希望定时将此部分数据存入mongodb中方便分析。
此过程中遇到的小问题是在maven打包的时候。使用assembly打包插件进行带依赖的打包。
mvn assembly:assembly,在打包过程中出现错误
Failed to execute goal on project ReadOracle: Could not resolve dependencies for project ReadOracle:ReadOracle:jar:1.0-SNAPSHOT: Failure to find com.oracle:ojdbc6:jar:11.2.0.1.
0 in https://repo.maven.apache.org/maven2 was cached in the local repository
问题显示的相当清楚,是由于ojdbc6:jar无法找到的原因,网上查到是由于甲骨文公司对ojdbc的授权问题,导致maven中心仓库没有此相关的jar包。因此需要使用本地jar文件打包,
但是笔者使用的是本地搭建的nexus服务器,应该不存在此问题。查了许多资料,也没有明白到底是什么原因。
最后在https://blog.csdn.net/viktoria/article/details/77503266 解决了问题,依然不是很清楚为什么。待之后深入了解maven打包过程。
完。
原文地址:https://www.cnblogs.com/hikikomori/p/9040304.html