Logback In Servlet
之前在看Log4j2,想在项目中使用它。后来发现在servlet中这家伙不怎么好使。虽然很新,但是beta版本总是不适合做上线的产品。之前曾经看到过有人说logback is awesome。今天决定试一试它的效果。如果对web很熟悉的,只要看step2和step5就可以了,剩下的都是基本的web配置的东东。
step1:首先在myeclipse中新建一个web project。
step2:然后直接把logback-core-1.0.9.jar、logback-classic-1.0.9.jar、slf4j-api-1.7.2.jar还有logback-access-1.0.9.jar拖到工程下的WEB-INF/lib目录下。
之所以要导入logback-access-1.0.9.jar包的原因是“The logback-access module integrates with Servlet containers, such as Tomcat and Jetty, to provide HTTP-access log functionality.”
step3:在jsp页面中加入一个表单,action指向我们要测试的servlet,再添加一个button,让页面可以触发这个servlet。
step4:在web.xml中配置一下
step5:新建一个TestServlet,填入logback相关的代码
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { Logger logger = LoggerFactory.getLogger(TestServlet.class.getName()); logger.error("Hello world."); } }
可以看到logback天然地使用了SLF4J,所以在切换其他logging framework的时候也不用特别操心了。
step6:run as -》myeclipse server application
选择tomcat 7.0
step7:在浏览器重触发按钮,使servlet被调用。
在console查看输出结果。
至此,整个简单的在servlet中使用logback的测试已经完成了。
刚才看了logback的architecture,感觉比Log4j2要简洁清晰一些,同时也有很多非常类似的地方,比如logger之间在level上的继承关系。
现在在看logback的configuration,跟Log4j2的也蛮像的,同样,还是比Log4j2更为清晰,而且还有自动查新。
之前折腾那么久的Log4j2感觉有点浪费时间了。应该一开始就看logback的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构