在web应用中,如果使用log4j做日志输出时,如果要输出sessionID,需要使用log4j的MDC或者NDC,这两者实现的功能是一样的,但是实现方法不一样,NDC使用的是HashMap,MDC使用的是线程的localThread。我是使用的MDC。
具体做法就是写一个Filter,在其中利用log4j的MDC把sessionID记录下来,然后在log4j的输出格式中利用%X输出即可。
我的Filter的代码是这样的,其中取sessionId的方法仅适用于spring框架,需要注意的是一定要在finally里把记录的数据清除掉。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { HttpServletRequest httpReq = (HttpServletRequest)request; MDC.put("sessionId", httpReq.getRequestedSessionId()); chain.doFilter(request, response); } finally { MDC.clear(); } }
在web.xml里配置Filter就不写了哈。
log4j中的配置如下,其中%X{sessionId}就可以取到Filter里写入的sessionId
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %t %X{sessionId} %c{2}:%L - %m%n
相关推荐
Log4j的配置文件(通常为`log4j.properties`或`log4j.xml`)可以定制日志输出的格式、级别、目标(如控制台、文件、邮件等)。 4. **Hibernate 框架核心**: 除了上述组件,一个完整的Hibernate开发工具包通常还会...
5. **避免日志中的计算或方法调用**:避免在日志输出语句中进行计算或方法调用,以防因此抛出异常。 6. **条件输出和占位符**:使用条件输出或占位符方式来输出日志,避免不必要的资源消耗。 7. **设置additivity...
Apache Log4j 是一个广泛使用的日志框架,它允许开发者灵活地控制日志信息的输出。在多线程的Web应用环境中,追踪用户操作变得尤为重要,尤其是在需要分析用户行为、解决用户问题或进行安全审计时。本文将详细介绍...
**MDC** 是Logback和log4j提供的一种工具,它允许我们在多线程环境中存储和检索诊断信息。当一个请求开始时,我们可以将与该请求相关的元数据(如用户ID、客户端IP、session ID、请求参数等)放入MDC。然后,通过...
4. 如何使用 log4j 作为 Tomcat 的日志输出? log4j 是一个流行的日志记录库,可以用于 Tomcat 的日志输出。要使用 log4j 作为 Tomcat 的统一日志输出,需要将 log4j.jar 和 commons-logging.jar 文件放在 $TOMCAT_...
Redis是流行的数据缓存系统...4. 可能还需要`log4j.properties`或`log4j.xml`,根据你的配置需求,定义日志输出格式和级别。 接下来,你需要配置Tomcat的`context.xml`文件,声明RedisSessionManager。例如: ```xml ...
log4j.logger.org.apache.catalina.session=debug, R ``` 这将使得Tomcat在启动时能够输出更详细的日志信息,有助于定位问题。 ##### 4. 检查Spring配置 确保Spring配置文件(applicationContext.xml)正确无误,...
2. **API设计**:SLF4J的API设计简单易用,如`LoggerFactory.getLogger()`获取logger实例,`logger.info()`, `logger.error()`等方法进行日志输出。 3. **绑定日志实现**:在项目中,需要通过jar依赖或配置文件将...
`log4j-1.2.17.jar`是经典的日志记录库Log4j的版本,它用于记录应用程序的运行日志,提供不同级别的日志输出,如DEBUG、INFO、WARN、ERROR等,这对于调试和监控系统运行状态非常有用。开发者可以通过配置log4j....
配置log4j,我们需要创建一个`log4j.properties`文件,定义日志级别、输出目的地等: ```properties log4j.rootLogger=DEBUG, FILE log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender...
本篇文章将围绕"hibernate-annotation3.4.0 + hibernate-distribution3.3.2 + slf4j-1.5.8.rar"这个压缩包中的内容,深入探讨这两个框架的使用及其版本间的差异,以及Slf4j日志框架的集成。 首先,Hibernate是Java...
在项目中,SLF4J API的使用降低了日志记录的复杂性,同时通过绑定不同的日志实现,可以根据环境和需求调整日志输出的级别和格式。 在学习和使用这个资源包时,建议按照以下步骤进行: 1. 理解Hibernate的核心概念...
`log4j` 是一个流行的日志记录框架,它为Java应用程序提供了灵活的日志输出功能。通过配置log4j的XML或properties文件,开发者可以选择不同的日志级别(如DEBUG, INFO, WARN, ERROR, FATAL),并指定日志输出的位置...
Log4j是一个强大的日志框架,允许开发者控制和定制应用程序的日志输出,对于调试和问题追踪非常有用。 4. **源代码目录 - src** `src`目录通常包含Java源代码。在Hibernate项目中,你会找到实体类(Entity)、配置...
- **日志框架选择**:选用合适的日志框架,如Log4j、SLF4J等,以满足系统的日志管理需求。 - **日志输出配置**:在项目配置文件中指定日志输出的位置、格式及级别等参数。 - **异常捕获与记录**:在关键代码处添加...
- 如果选用Log4j:`log4j.jar`,同时可能还需要配置`log4j.properties`以定义日志级别和输出位置。 - 如果选用SLF4J:`slf4j-api.jar`和具体的实现库,如`slf4j-log4j12.jar`。 - 对于Java内置日志,仅需`java....
通过配置log4j.properties或log4j.xml,可以定制日志输出级别和格式。 4. **JUnit**:junit.jar是单元测试框架,用于测试代码的正确性。在Hibernate项目中,JUnit可以帮助开发者验证ORM逻辑是否按预期工作,例如...
2. 添加必要的jar包,包括Hibernate的核心库、Log4j日志库以及数据库驱动(例如MySQL)到工程的类路径或WEB-INF/lib目录。 3. 编写配置文件`hibernate.cfg.xml`,设置数据库连接信息,通常会从`hibernate.properties...
`slf4j-log4j12.jar`是SLF4J的具体实现,将日志输出到Log4j。 在使用这些jar包时,还需要确保你的项目配置正确,包括Hibernate的配置文件(通常为`hibernate.cfg.xml`),其中定义了数据库连接参数、实体类扫描路径...
8. **配置日志系统并显示DDL语句**:选择SLF4J作为日志门面接口,通过SLF4J将接口转换为Log4J的实现,并配置Log4J的属性文件`log4j.properties`来记录日志,其中包括显示DDL语句。 #### 二、使用Hibernate生成...