本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给重复发明重新定义博客系统的人做个参考 ❤️

日志记录

Solo 使用 log4j 作为日志组件,Latke 框架通过 slf4j 对日志接口进行了简单包装,Solo 中所有记录日志的地方都是用的 Lakte 框架提供的日志接口。

值得一提的是,如果你想显示执行的 SQL,需要在 log4j.props 中配置:

log4j.logger.org.b3log.latke.repository.jdbc.util=TRACE

错误页跳转

Latke 框架处理错误页面时使用的是 Servlet 容器的机制,所以需要在 web.xml 中配置 <error-page> 元素:

<error-page>
    <error-code>404</error-code>
    <location>/error/404</location>
</error-page>
<error-page>
    <error-code>401</error-code>
    <location>/error/401</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/error/403</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error/500</location>
</error-page>

这样在代码中需要跳转错误页面的地方就直接通过 Servlet 接口 Response#sendError 返回即可:

response.sendError(HttpServletResponse.SC_NOT_FOUND);
...
response.sendError(HttpServletResponse.SC_FORBIDDEN);

启动阶段报错

在启动阶段发生一些致命问题将导致退出进程,比如:

  • 加载系统基础配置异常
  • 注册事件处理器异常
  • 加载默认皮肤异常
  • 版本升级异常

进程退出前会记录详细的日志,根据日志可以定位问题。另外,我们没有对进程退出码进行细分,统一为 -1。需要注意的是,我们用了 System#exit 来退出,这意味着整个容器进程也会被退出。


回到全文目录:《Solo 从设计到实现》

感谢    赞同    分享    收藏    关注    反对    举报    ...