spring-mvc.xml
<!-- extends HandlerInterceptorAdapter --> <mvc:interceptors> <bean class="com.snailteam.game.controller.TrackHandler"></bean> </mvc:interceptors>
package com.snailteam.game.controller; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class TrackHandler extends HandlerInterceptorAdapter { protected final Log logger = LogFactory.getLog(getClass()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Map<String, String> header = new HashMap<String, String>(); Enumeration<String> hs = request.getHeaderNames(); while (hs.hasMoreElements()) { String h = hs.nextElement(); header.put(h, request.getHeader(h)); } logger.info(header); return super.preHandle(request, response, handler); } }
log4j
# Rules reminder: # DEBUG < INFO < WARN < ERROR < FATAL # Global logging configuration log4j.rootLogger=DEBUG,INFO,ERROR,stdout,file ## Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %l - %m%n log4j.appender.stdout.Encoding=UTF-8 # append to file Info log4j.appender.infoFile.Threshold=INFO log4j.appender.infoFile=org.apache.log4j.RollingFileAppender log4j.appender.infoFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.infoFile.Encoding=UTF-8 log4j.appender.infoFile.File=log/game.log log4j.appender.infoFile.DatePattern='_'yyyyMMdd'.log' log4j.appender.infoFile.layout=org.apache.log4j.PatternLayout log4j.appender.infoFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %l - %m%n # append to file error log4j.appender.errorFile.Threshold=ERROR log4j.appender.errorFile=org.apache.log4j.RollingFileAppender log4j.appender.errorFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorFile=org.apache.log4j.FileAppender log4j.appender.errorFile.File=log/game-error.log log4j.appender.errorFile.DatePattern='_'yyyyMMdd'.log' log4j.appender.errorFile.Append=true log4j.appender.errorFile.layout=org.apache.log4j.PatternLayout log4j.appender.errorFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %l - %m%n #log4j.logger.freemarker=debug log4j.appender.mongodb.layout=org.apache.log4j.PatternLayout log4j.appender.mongodb.layout.ConversionPattern=%m%n log4j.appender.mongodb=org.log4mongo.MongoDbAppender log4j.appender.mongodb.databaseName=logdb log4j.appender.mongodb.Append=true log4j.appender.mongodb.collectionName=loginfo log4j.appender.mongodb.hostname=192.168.1.246 log4j.appender.mongodb.port=9007 log4j.appender.mongodb.writeConcern=FSYNCED # com.snailteam.game.controller.TrackHandler >>> accessFile log4j.appender.accessFile=org.apache.log4j.RollingFileAppender log4j.appender.accessFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.accessFile.Encoding=UTF-8 log4j.appender.accessFile.File=log/accessFile.log log4j.appender.accessFile.DatePattern='_'yyyyMMdd'.log' log4j.appender.accessFile.layout=org.apache.log4j.PatternLayout log4j.appender.accessFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %l - %m%n log4j.additivity.com.snailteam.game.controller.TrackHandler=false log4j.logger.com.snailteam.game.controller.TrackHandler=debug,accessFile log4j.logger.org.springframework=debug log4j.logger.com.snailteam.game=info, infoFile,errorFile
相关推荐
2. **Appenders**: Appender是Log4j的输出端口,用于指定日志信息的输出目标。在`log4j.properties`中,可能会定义多个Appender,比如将日志输出到控制台(ConsoleAppender)和文件(FileAppender)。 3. **Layouts...
- **Appender(输出器)**:负责将日志信息发送到指定的目标,如控制台、文件、数据库等。 - **Layout(布局器)**:决定日志信息的输出格式,如简单的文本、XML、HTML等。 - **Filter(过滤器)**:允许根据特定...
Log4j提供了灵活的日志配置,可以通过XML、properties文件或者代码动态改变日志级别,控制输出格式,以及指定日志输出的目的地(控制台、文件、数据库等)。此外,Log4j还支持自定义日志布局模式,可以方便地定制...
Logger负责生成日志消息,Appender负责将这些消息输出到指定的目标,如控制台、文件、数据库等,而Layout则定义了日志消息的格式。 配置Log4j通常有两种方式,一种是使用XML格式的配置文件(log4j.xml),另一种是...
- `log4j.appender.appender1=org.apache.log4j.ConsoleAppender`:设置 appender1 为 ConsoleAppender 类型,即日志信息将被输出到控制台。 - `log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout`:...
Log4j的主要目标是简化日志记录过程,使其能够适应各种复杂的运行环境,并且支持不同的日志级别和输出格式,便于调试、监控和分析应用程序的行为。 **Log4j的组件** 1. **Logger**: 是日志记录的基本单元,通过...
3. **Appender**:输出器负责将日志信息发送到指定的目标,如控制台、文件、电子邮件、网络等。不同的Appender实现了不同的输出策略,使得日志可以灵活地被存储和查看。 4. **Layout**:布局定义了日志信息的格式,...
在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...
类图展示了Log4j的主要类和接口及其关系,帮助理解其内部工作原理和设计模式。 **2.3 日志级别** 日志级别定义了日志信息的重要性,从DEBUG(调试信息)到FATAL(致命错误)。开发者可以通过设置级别来过滤不必要的...
Log4j2在性能上做了大量优化,例如使用了Log4j2 API而不是SLF4J,避免了接口调用的开销。此外,它还支持基于日志等级的过滤,减少了不必要的日志计算。 **总结** 在提供的"Log4j2 demo (log4j2 version 2.1)...
这个库包含了Log4j的所有实现类和接口,使我们能够方便地调用其API进行日志记录。例如,我们可以通过以下代码创建一个名为"myLogger"的日志器: ```java import org.apache.log4j.Logger; public class MyClass { ...
源码分析方面,我们可以关注几个关键类:`org.apache.log4j.Logger`是日志记录的主要接口,`org.apache.log4j.Category`(Logger的实现)负责实际的日志记录,`org.apache.log4j.Appender`接口定义了日志输出的基本...
SLF4J是一个日志API的抽象层,它的设计目标是为各种日志框架提供一个统一的接口,如Logback、Log4j等。这样,开发者可以在项目开发阶段使用SLF4J,而在部署时根据实际需求选择具体的日志实现。 SLF4J的核心在于提供...
Log4j是一款开源的日志记录框架,最初由Apache软件基金会开发,其设计目标是提供一个灵活且可扩展的日志系统,使开发者能够方便地控制日志信息的输出级别,以及输出格式和目的地。Log4j 1.2.15是1.x系列的一个稳定...
2. **配置日志实现**:在`commons-logging.properties`文件中,指定日志实现为Log4j。例如: ``` org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog ``` 3. **配置Log4j**:在`...
1. 将`log4j-1.2.16.jar`和`slf4j-api-1.6.1.jar`添加到项目的类路径中。 2. 添加`slf4j-log4j12.jar`作为转换包,使SLF4J能够使用Log4j实现。 3. 创建或提供一个`log4j.properties`文件,并将其配置为项目所需的...
通过设置`log4j.logger`属性,我们可以指定这些接口的日志输出应该被哪个Appender捕获。例如,所有在`com.example.api.A`包及其子包下的类产生的日志都会被写入A.log文件。 文件名称列表中的"test"可能是一个测试...
1. **核心库**: "apache-log4j-1.2.16.jar" 是Log4j的核心库,它包含了日志记录的主要类和接口,如`Logger`,`Appender`,`Layout`等。`Logger`是记录日志的对象,`Appender`负责将日志信息发送到特定的目标(如...
- **Logger**: 日志记录器,是log4j的核心接口,用于生成不同级别的日志事件。 - **Level**: 日志级别,包括DEBUG、INFO、WARN、ERROR、FATAL等,用于控制日志信息的输出。 - **Appender**: 输出端,负责将日志信息...
在使用Apache Log4j 2.3时,开发人员应确保正确配置日志框架,包括设置合适的日志级别(如DEBUG、INFO、WARN、ERROR、FATAL)和指定日志输出的位置。此外,考虑到性能和可维护性,建议遵循最佳实践,如避免过多的...