Java应用开发(中、高级)课件 任务3.7 完成系统日志消息采集模块实现_第1页
Java应用开发(中、高级)课件 任务3.7 完成系统日志消息采集模块实现_第2页
Java应用开发(中、高级)课件 任务3.7 完成系统日志消息采集模块实现_第3页
Java应用开发(中、高级)课件 任务3.7 完成系统日志消息采集模块实现_第4页
Java应用开发(中、高级)课件 任务3.7 完成系统日志消息采集模块实现_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务7.完成系统日志消息采集模块实现任务描述

本任务将实现采集模块的系统日志消息采集功能,分别完成日志配置、日志埋点、日志分析等步骤,我们将学习如果编写系统日志消息采集功能,以理系统日志对于系统监控和异常分析的重要性。知识准备1.系统运行信息与日志记录介绍:(1)功能模块的启动和结束。(完整的系统由多个功能模块组成,每个模块负责不同的功能,因此需要对模块的启动和结束进行监控。是否在需要的时机正常加载该模块?又是否在退出结束的时候正常完成结束操作,正常退出?)(2)用户的登录和退出。(用户登录或退出系统的时间与IP)(3)系统的关键性操作。(数据库链接信息、网络通信的成功与失败等)(4)系统运行期间的异常信息。(NPE、OOM以及其他的超时、转换异常等)(5)关键性方法的进入和退出。(一些重要业务处理的方法,在进入和结束的时候需要有日志信息进行输出)2.日志格式介绍:日志信息要求必须精简,过多的无用信息不但对系统分析起不到什么作用,反而会增加系统的运行压力、消耗系统的运行资源。日志模板仅供参考:时间-[线程名][日志等级]-日志输出位置(全类名,可以精确到方法名):日志信息2013-09-0410:49:20.296-[Thread-initRedis21504][INFO]-com.chinasofti.LoginController.initLogInfo:LingMing[User]islogining日志信息的内容可以根据不同的情况进行设计,但是前面的时间到日志输出位置必须要保证完整性,这样才有利于日志的分析。3.日志信息等级划分介绍:日志等级通常分为四种:DEBUG、INFO、WARN、ERROR(1)DEBUG:系统调试信息,通常用于开发过程中对系统运行情况的监控,在实际运行环境中不进行输出。(2)INFO:系统运行的关键性信息,通常用于对系统运行情况的监控。(3)WARN:告警信息,系统存在潜在的问题,有可能引起运行异常,但此时并未产生异常。(4)ERROR:系统错误信息,需要进行及时处理和优化。任务实施步骤1:完成日志模块的配置(1)在resources目录中创建logback-config.xml,用于配置日志的打印方式,内容如下:①<propertyname="log.path"value="logs"/>为配置日志存放路径,存在于项目根目录下的logs目录中;②value="%d{HH:mm:ss.SSS}[%thread]%-5level%logger{20}-[%method,%line]-%msg%n"为日志输出格式;③level="info"为日志的输出级别(分别有info,debug,warning,error4个级别);④class="ch.qos.logback.core.rolling.RollingFileAppender"表示日志输出到的文件去。<?xmlversion="1.0"encoding="UTF-8"?><configurationscan="true"scanPeriod="60seconds"debug="false"><springPropertyscope="context"name=""source=""/><springPropertyscope="context"name="logstash.destination"source="logstash.server-addr"/>

<!--日志存放路径--><propertyname="log.path"value="logs"/><!--日志输出格式--><propertyname="log.pattern"value="%d{HH:mm:ss.SSS}[%thread]%-5level%logger{20}-[%method,%line]-%msg%n"/>

<!--控制台输出--><appendername="console"class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender>

<!--系统日志输出--><appendername="file_info"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/info.log</file><!--循环政策:基于时间创建日志文件--><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件名格式--><fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern><!--日志最大的历史60天--><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filterclass="ch.qos.logback.classic.filter.LevelFilter"><!--过滤的级别--><level>INFO</level><!--匹配时的操作:接收(记录)--><onMatch>ACCEPT</onMatch><!--不匹配时的操作:拒绝(不记录)--><onMismatch>DENY</onMismatch></filter></appender>

<!--系统模块日志级别控制--><loggername="com.chinasofti"level="info"/><!--Spring日志级别控制--><loggername="org.springframework"level="warn"/><!--系统操作日志--><rootlevel="info"><appender-refref="console"/><appender-refref="file_info"/></root></configuration>(2)配置application.yml,将项目的输出配置指向logback-config.xmllogging:config:classpath:logback-config.xml步骤2:实现在点餐模块添加日志埋点(1)在WaiterDishesController上引入Logger,代码如下:Loggerlog=LoggerFactory.getLogger(WaiterDishesController.class);(2)在list()方法中添加()打印出相应位置的变量信息,代码如下:publicPageResults<DishesInfo>list(Integerpage){("listStarting,page:"+page);intmaxPage=service.getMaxPage(8);("maxPage:"+maxPage);page=page<1?1:page;page=page>maxPage?maxPage:page;("page:"+page);List<DishesInfo>list=service.getDishesInfoByPage(page,8);("listCompleted,list:"+list);returnPageResults.success(list,page,maxPage);}(3)在getOrderList()方法中添加()打印出相应位置的变量信息,代码如下:publicPageResults<?>getOrderList(HttpServletRequestrequest){("getOrderListStarting,request:"+request);LoginUserloginUser=tokenService.getLoginUser(request);("loginUser:"+loginUser);if(loginUser==null){returnPageResults.failure();}UserInfouser=loginUser.getUser();IntegerwaiterId=user.getUserId();("waiterId:"+waiterId);PageResultspageResults=PageResults.success(orderService.findOrderByWaiter(waiterId));("getOrderListCompleted,pageResults:"+pageResults);returnpageResults;}(4)在checkout()方法中添加()打印出相应位置的变量信息,代码如下:publicResults<?>checkout(HttpServletRequestrequest,@RequestBodyList<OrderDishesVO>orderDishes)throwsInterruptedException,RemotingException,MQClientException,MQBrokerException{("checkoutStarting,orderDishes:"+orderDishes);LoginUserloginUser=tokenService.getLoginUser(request);("loginUser:"+loginUser);if(loginUser==null){returnResults.failure();}UserInfouser=loginUser.getUser();("user:"+user);intuserId=user.getUserId();OrderInfoorderInfo=orderService.saveOrder(userId);("orderInfo:"+orderInfo);if(orderInfo==null||orderInfo.getOrderId()==null){returnResults.failure();}orderService.saveOrderDishes(orderInfo.getOrderId(),orderDishes);Stringmsg=orderInfo.getOrderId().toString();Messagemessage=newMessage(JmsConfig.TOPIC,"checkout",msg.getBytes());SendResultsendResult=producer.getProducer().send(message);("sendResult:"+sendResult);("checkoutCompleted,sendResult:"+sendResult);returnResults.success();}(5)为OrderDishesVO,OrderVO,DishesInfo添加toString()方法,示例如下:@OverridepublicStringtoString(){return"OrderDishesVO{"+"dishesId="+dishesId+",dishesName='"+dishesName+'\''+",num="+num+",dishesPrice="+dishesPrice+'}';}(1)运行项目,从菜品页加入购物车,并确认订单,此时后台将产生日志,可开始分析。步骤3:查看日志文件并分析(1)在项目的根目录中,找到logs目录,可查看项目运行过程中打印的日志

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论