Spring log4j.xml

本文介绍了一种利用Spring框架和Log4j记录URL与Controller之间映射关系的方法。通过自定义组件UrlControllerMappingStatistics,实现了在系统启动时自动收集所有URL及其对应的Controller信息,并将这些信息记录到特定的日志文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ibatis sql语句、统计url与controller之间的映射关系统计 日志


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>

<appender name="IBatis" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
</layout>
<!--限制输出级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>

<appender name="UrlControllerMapping" class="org.apache.log4j.FileAppender">
<param name="file" value="d:/TestUrlControllerMapping.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>

<logger name="UrlControllerMappingStatistics" additivity="true">
<level value="INFO" />
<appender-ref ref="UrlControllerMapping" />
</logger>

<logger name="cn.org.fds" additivity="true">
<level value="DEBUG" />
</logger>

<logger name="com.ibatis" additivity="true">
<level value="DEBUG" />
</logger>

<logger name="java.sql.Connection" additivity="true">
<level value="DEBUG" />
</logger>

<logger name="java.sql.Statement" additivity="true">
<level value="DEBUG" />
</logger>

<logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG" />
<appender-ref ref="IBatis" />
</logger>

<logger name="java.sql.ResultSet" additivity="true">
<level value="DEBUG" />
<appender-ref ref="IBatis" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>

<logger name="org.springframework.beans">
<level value="info" />
</logger>

<logger name="org.springframework.context">
<level value="info" />
</logger>

<logger name="org.springframework.web">
<level value="info" />
</logger>

<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>

</log4j:configuration>




在java中直接用 logger


package edu.gd.commons;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;

/**
* url与controller之间的映射关系统计
*
*
*
*/
@Component
public class UrlControllerMappingStatistics implements BeanFactoryAware,
InitializingBean {

private static final Logger logger = Logger
.getLogger("UrlControllerMappingStatistics");

private BeanFactory beanFactory;


public void afterPropertiesSet() throws Exception {
DefaultAnnotationHandlerMapping handlerMapping = beanFactory
.getBean(DefaultAnnotationHandlerMapping.class);
Map<String, Object> handlerMap = handlerMapping.getHandlerMap();
Collection<Object> controllers = handlerMap.values();
Set<Object> controllerSet = new HashSet<Object>(controllers);
for (Object obj : controllerSet) {
Class<?> controllerClass = obj.getClass();
Method[] methods = controllerClass.getMethods();
for (Method m : methods) {
RequestMapping rm = m.getAnnotation(RequestMapping.class);
if (rm != null) {
logger.info("URL = " + Arrays.toString(rm.value())
+ ", ControllerClass = " + obj.getClass()
+ ", Method = " + m.getName());
}
}
}

}

public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值