【发布时间】:2012-09-28 17:55:13
【问题描述】:
我们正在为我们的 WebApplication 使用 Spring MVC 3。我从应用程序中看到了一个奇怪的行为。当用户执行操作(例如:按钮单击)时,我看到控制器日志记录了两次,控制器中的后续调用也是如此。我们使用的控制器是默认的,单例的。 所以,
我想打印控制器中的线程信息(比如threadName。试过Thread.getName()..是唯一的)..有什么帮助吗?
如何确保只有一个 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
Web.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>
..........
.........
.........
谢谢
【问题讨论】:
-
你在使用日志库吗?
-
更有可能是日志记录框架问题,两次记录相同的消息。你使用 Logback 还是 Log4J?可以分享一下你的配置吗?在控制器中设置一个断点,我敢打赌它只会被击中一次。
标签: multithreading spring jakarta-ee spring-mvc spring-security