log4j获取IP显示在日志中
2016-02-22 11:27
417 查看
要想实现获取IP并显示在log中必须先了解log4j自带的两个类MDC和NDC
NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。
NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端地址等等信息。相关的信息使用NDC.push(message);
在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息
例如:String remoteAddr = request.getRemoteAddr();
NDC.push(remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS}
[%X] -[%c]-[%p] %m%n
MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key, value);在配置PatternLayout的时候使用:%x{key}来输出对应的value
例如:String remoteAddr = request.getRemoteAddr();
MDC.put("ip", remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS} [%X{ip}] -[%c]-[%p] %m%n
如果在项目中有过滤器,你可以把获取ip 的方法直接定义在过滤器中,然后在配置文件中配置获取ip的显示就可以了
From: http://www.cnblogs.com/zyfxlv/archive/2012/09/02/log4j.html
NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。
NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端地址等等信息。相关的信息使用NDC.push(message);
在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息
例如:String remoteAddr = request.getRemoteAddr();
NDC.push(remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS}
[%X] -[%c]-[%p] %m%n
MDC内部使用了类似map的机制来存储信息,相对应的方法,MDC.put(key, value);在配置PatternLayout的时候使用:%x{key}来输出对应的value
例如:String remoteAddr = request.getRemoteAddr();
MDC.put("ip", remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS} [%X{ip}] -[%c]-[%p] %m%n
如果在项目中有过滤器,你可以把获取ip 的方法直接定义在过滤器中,然后在配置文件中配置获取ip的显示就可以了
From: http://www.cnblogs.com/zyfxlv/archive/2012/09/02/log4j.html
相关文章推荐
- Apache Log4j 2.0-rc1 发布
- log4j详细的常用配置说明介绍
- Log4j定时打印日志及添加模块名配置的Java代码实例
- log4j的使用详细解析
- log4j.xml 配置不同的log到不同的文件
- Log4J输出至当前web路径
- Spring3 AOP配置异常。执行时间记录
- log4j.properties配置与加载应用
- 一个配置比较全的log4j.xml文件(一)
- Logstash 与Elasticsearch整合使用示例
- Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析
- Kafka+Log4j实现日志集中管理
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- SpringAOP实现自动生成日志
- Log4j的ConversionPattern参数的格式含义
- Java日志那点儿事儿
- 使用高效的日志工具—Log4J
- Log4j 错误: java.lang.NoSuchFieldError: TRACE
- log4j日志配置
- Tomcat日志配置,可结合log4j