0

我们正在为我们的 WebApplication 使用 Spring MVC 3。我从应用程序中看到了一个奇怪的行为。当用户执行操作(例如:按钮单击)时,我看到控制器日志记录了两次,控制器中的后续调用也是如此。我们使用的控制器是默认的,单例的。所以,

  1. 我想在控制器中打印线程信息(如threadName。尝试过Thread.getName()..是唯一的)..有什么帮助吗?

  2. 如何确保只加载了一个 Spring 容器? - 有什么建议么?

log4j 道具:

    `log4j.appender.ROLL_FILE=org.apache.log4j.RollingFileAppender 
     log4j.appender.ROLL_FILE.File=/ws/was/dept/logs/${module.jvm.instance}_module.log
     log4j.appender.ROLLING_FILE.Append=true 
     log4j.additivity.ROLLING_FILE.Append=false 
     log4j.appender.ROLLING_FILE.MaxFileSize=10MB 
     log4j.appender.ROLLING_FILE.MaxBackupIndex=20 
     log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout 
     log4j.appender.ROLLING_FILE.layout.ConversionPattern=[module] %d - %c -%-4r [%t] %-5p %c %x - %m

网页.xml:

<display-name>module</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring/int/root-int-context.xml,/WEB-INF/spring/root-  context.xml</param-value>
   </context-param>
<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
      <servlet>
    <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet.xml</param-value>
      </init-param>          
     <load-on-startup>1</load-on-startup>
  </servlet>`
   <servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 ..........
 .........
 .........

谢谢

4

2 回答 2

1
  1. 用于Thread.getId()获取唯一线程 ID。
  2. 检查您的记录器配置-我猜您正在使用log4jslfj-您可能有多个记录器拦截消息在父记录器中定义的附加器之上添加附加器,这可能会导致打印两条消息-因此请检查是否你有那个并定义additivity为假的。
于 2012-09-28T18:29:16.523 回答
0

我想在控制器中打印线程信息(如threadName。试过Thread.getName()..是唯一的)

  • 使用日志框架。你可以找到几个例子。在此处检查以配置 logback

如何确保只加载了一个 Spring 容器?

  • 我真的不明白你在这里的意思,但是如果在你的 web.xml 中适当地定义了 contextConfigLocation,那么 Spring 容器将被正确加载

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:/META-INF/spring/*.xml 
    </param-value>
    

于 2012-09-28T18:23:47.417 回答