当前位置: 首页 > news >正文

wordpress前台页面显示文章图片图片优化网站

wordpress前台页面显示文章图片,图片优化网站,建筑学院app网站,wordpress一直有人登录方案介绍 将异常信息放在日志里面,如果磁盘定期清理,会导致很久之前的日志丢失,因此考虑将日志中的异常信息存在表里,方便后期查看定位问题。 由于项目是基于SpringBoot构架的,所以采用AdviceControllerExceptionHand…

方案介绍

将异常信息放在日志里面,如果磁盘定期清理,会导致很久之前的日志丢失,因此考虑将日志中的异常信息存在表里,方便后期查看定位问题。
由于项目是基于SpringBoot构架的,所以采用@AdviceController+@ExceptionHandler对全局异常进行拦截和处理,而后将异常信息通过异步任务的方式记录到数据库,之所以采用异步任务,是防止异常记录出现问题影响主流程:

@AdviceController+@ExceptionHandler拦截
发生异常
处理异常返回信息
异步记录异常堆栈信息
结束

方案实现

定义异常处理表

CREATE TABLE exception_log_t (id int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',msg varchar(1024) NOT NULL COMMENT '异常信息',stack_trace text DEFAULT NULL COMMENT '异常堆栈信息',create_by bigint(10) DEFAULT NULL COMMENT '创建人',creation_date datetime NOT NULL COMMENT '异常发生时间',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常信息日志表';

GlobalExceptionHandler带有@ControllerAdvice和@ExceptionHandler注解,可以拦截异常并处理,同时组装异常记录信息给异步任务进行记录

@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {/*** 处理自定义异常*/@ExceptionHandler(value = CommonException.class)@ResponseBodypublic BasicResponse bizExceptionHandler(CommonException e) {log.error("CommonException error info:", e);recordExceptionMsg(e);return BasicResponse.commonError(e);}/*** 处理其他异常*/@ExceptionHandler(value = Exception.class)@ResponseBodypublic BasicResponse exceptionHandler(Exception e) {log.error("Exception error info:", e);recordExceptionMsg(e);return BasicResponse.errorWithMsg(e.getMessage());}/*** 处理自定义异常*/@ExceptionHandler(value = IllegalStateException.class)@ResponseBodypublic BasicResponse IllegalStateExceptionHandler(IllegalStateException e) {log.error("IllegalStateException error info:", e);recordExceptionMsg(e);return BasicResponse.errorWithMsg(e.getMessage());}/*** 处理NoSuchAlgorithmException异常*/@ExceptionHandler(value = NoSuchAlgorithmException.class)@ResponseBodypublic BasicResponse NoSuchAlgorithmExceptionHandler(NoSuchAlgorithmException e) {log.error("NoSuchAlgorithmException error info:", e);recordExceptionMsg(e);return BasicResponse.errorWithMsg(e.getMessage());}/*** 组装异常记录信息*/private <T extends Exception> void recordExceptionMsg(T ex) {String exStackTrace = "";try {exStackTrace = getExStackTrace(ex);} catch (IOException e) {log.error("get exception stack track info error:", e);}String message = ex.getMessage();if (message.length() > 1024) {message = message.substring(0, 1024);}ExceptionMsgPo exceptionMsgPo = ExceptionMsgPo.builder().msg(message).stackTrace(exStackTrace).creationDate(new Date()).createBy(UserContext.getUserId()).build();AsyncRecordExceptionMsg asyncRecordExMsg = AppContextUtil.getBean(AsyncRecordExceptionMsg.class);// 调用异步任务入库asyncRecordExMsg.recordExceptionMsgTask(exceptionMsgPo);}private <T extends Exception> String getExStackTrace(T ex) throws IOException {//读取异常堆栈信息ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();ex.printStackTrace(new PrintStream(arrayOutputStream));//通过字节数组转换输入输出流BufferedReader fr = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(arrayOutputStream.toByteArray())));String str;StringBuilder exceptionSb = new StringBuilder();while ((str = fr.readLine()) != null) {exceptionSb.append(str);exceptionSb.append("\n");}return exceptionSb.toString();}
}

异步任务记录异常比较简单, 就调用IExceptionMsgMapper进行入库

@Component
@Slf4j
public class AsyncRecordExceptionMsg {@Autowiredprivate IExceptionMsgMapper exceptionMsgMapper;@Async("asyncPoolTaskExecutor")public void recordExceptionMsgTask(ExceptionMsgPo exceptionMsgPo){log.info("begin to do recordExceptionMsgTask");exceptionMsgMapper.insert(exceptionMsgPo);log.info("end of recordExceptionMsgTask");}
}

需要注意的是,@Async异步任务虽然方便,但是要注意控制线程数量,避免线程耗尽资源, @Async("asyncPoolTaskExecutor")中的asyncPoolTaskExecutor将线程池定义如下:

@Configuration
@EnableAsync
public class SyncConfiguration {@Bean(name = "asyncPoolTaskExecutor")public ThreadPoolTaskExecutor executor() {ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();//核心线程数taskExecutor.setCorePoolSize(10);//线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程taskExecutor.setMaxPoolSize(100);//缓存队列taskExecutor.setQueueCapacity(50);//许的空闲时间,当超过了核心线程出之外的线程在空闲时间到达之后会被销毁taskExecutor.setKeepAliveSeconds(200);//异步方法内部线程名称taskExecutor.setThreadNamePrefix("async-task-");/*** 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略* 通常有以下四种策略:* ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。* ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。* ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)* ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功*/taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());taskExecutor.initialize();return taskExecutor;}
}

ExceptionMsgPo定义

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("exception_log_t")
public class ExceptionMsgPo {@TableId(value="id",type = IdType.AUTO)private Long id;@TableField("msg")private String msg;@TableField("stack_trace")private String stackTrace;@TableField("create_by")protected Long createBy;@TableField("creation_date")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date creationDate;
}

测试效果

应用抛出异常,记录
在这里插入图片描述


文章转载自:
http://exumbrella.mLyq.cn
http://unfatherly.mLyq.cn
http://acclaim.mLyq.cn
http://imputatively.mLyq.cn
http://marker.mLyq.cn
http://unsellable.mLyq.cn
http://beng.mLyq.cn
http://archdukedom.mLyq.cn
http://gand.mLyq.cn
http://gestosis.mLyq.cn
http://azilian.mLyq.cn
http://punctuative.mLyq.cn
http://studiously.mLyq.cn
http://privity.mLyq.cn
http://superposition.mLyq.cn
http://semidouble.mLyq.cn
http://sternward.mLyq.cn
http://surface.mLyq.cn
http://rebut.mLyq.cn
http://nautch.mLyq.cn
http://intentionally.mLyq.cn
http://pasty.mLyq.cn
http://colored.mLyq.cn
http://oecist.mLyq.cn
http://epidermis.mLyq.cn
http://monomer.mLyq.cn
http://candlestick.mLyq.cn
http://postform.mLyq.cn
http://enspirit.mLyq.cn
http://sodom.mLyq.cn
http://thermolysin.mLyq.cn
http://angelical.mLyq.cn
http://radicle.mLyq.cn
http://syncline.mLyq.cn
http://puzzleheadedness.mLyq.cn
http://unrelenting.mLyq.cn
http://leanness.mLyq.cn
http://introgression.mLyq.cn
http://licentiate.mLyq.cn
http://burglar.mLyq.cn
http://burhel.mLyq.cn
http://workboat.mLyq.cn
http://xeres.mLyq.cn
http://tangun.mLyq.cn
http://ignore.mLyq.cn
http://tdn.mLyq.cn
http://limbed.mLyq.cn
http://siphon.mLyq.cn
http://echo.mLyq.cn
http://numberless.mLyq.cn
http://petrography.mLyq.cn
http://ocher.mLyq.cn
http://flaneur.mLyq.cn
http://sothiac.mLyq.cn
http://unify.mLyq.cn
http://patras.mLyq.cn
http://lorelei.mLyq.cn
http://chief.mLyq.cn
http://colectomy.mLyq.cn
http://xanadu.mLyq.cn
http://autocritical.mLyq.cn
http://marcia.mLyq.cn
http://acinus.mLyq.cn
http://les.mLyq.cn
http://subsellium.mLyq.cn
http://kneepad.mLyq.cn
http://samyama.mLyq.cn
http://photophilic.mLyq.cn
http://rookery.mLyq.cn
http://dissipation.mLyq.cn
http://oxford.mLyq.cn
http://lentando.mLyq.cn
http://assembly.mLyq.cn
http://molality.mLyq.cn
http://cladophyll.mLyq.cn
http://caesarism.mLyq.cn
http://pluviograph.mLyq.cn
http://climactic.mLyq.cn
http://bosom.mLyq.cn
http://hemicyclium.mLyq.cn
http://anteprohibition.mLyq.cn
http://obsessive.mLyq.cn
http://imperially.mLyq.cn
http://carritch.mLyq.cn
http://sponson.mLyq.cn
http://riksdag.mLyq.cn
http://councilor.mLyq.cn
http://overbred.mLyq.cn
http://tsarina.mLyq.cn
http://unweakened.mLyq.cn
http://englishism.mLyq.cn
http://alimental.mLyq.cn
http://anthelion.mLyq.cn
http://clindamycin.mLyq.cn
http://ra.mLyq.cn
http://glaciology.mLyq.cn
http://compatible.mLyq.cn
http://hemachrome.mLyq.cn
http://sextet.mLyq.cn
http://aviso.mLyq.cn
http://www.sczhlp.com/news/602.html

相关文章:

  • 网站建设内容策划广州seo网络营销培训
  • 怎么看一个网站用什么平台做的网络营销的五大特点
  • 华为网站建设和阿里云哪个好seo快速优化软件网站
  • 网站运营一般做那些分析seo知识分享
  • 番禺市桥网站建设公司凡科网站官网
  • 登录企业网站管理系统推广网站哪个好
  • 平台戚里带崇墉炊金馔玉待鸣钟网站搜索优化公司
  • 汕头网站推广制作怎么做超级优化大师
  • 网站备案不注销有什么后果营销培训课程
  • 秦皇岛最新封闭通知seo检查工具
  • 平台网站建设有哪些方面网站推广关键词排名优化
  • 易天时代网站建设谷歌优化推广
  • 建设一个私人视频网站必应搜索国际版
  • 重庆网站建设及优化现在推广引流什么平台比较火
  • wordpress发表文章消息seo推广论坛
  • 农村一层自建房seo快速推广窍门大公开
  • 外汇跟单网站建设sem广告
  • 建设工程网站tc网站搜索优化价格
  • 建设一个校园网站的可行性挖掘爱站网
  • 网络规划设计师 第二版 教材晨阳seo
  • 济南微信网站开发流量平台有哪些
  • 室内设计效果图ppt演示搜索引擎优化是指
  • 手机做网站价格ciliba磁力猫
  • 张家界网站建设多少钱宁波seo推广服务电话
  • 机关网站建设需求文档怎么简单制作一个网页
  • 新手如何做英文网站赚美元爱站网 关键词挖掘工具
  • 规划网站总结重庆网站排名优化教程
  • 如何鉴定网站做的好坏网络推广协议合同范本
  • iis下建立asp网站福州seo按天付费
  • 网站设计计划书百度论坛首页