SpringのLog 4 jConfigListenerを使用してwebAppKeyの変更に注意


springを使用して前後して2つのモジュールを開発し、単独でテストするのは正常です.また、前後してオンラインで実行し、Tomcatを起動した後も常に初期化に失敗しているモジュールがあり、tomcat管理コンソールで手動で起動する必要があります.長いこと探しても原因が見つからなかった.その後、管理者はTomcatを再起動するたびにこのモジュールが実行されず、多くの問題と面倒を引き起こした.今日はわざわざ他のtomcatログファイルを見て、やっと問題点を発見した.元はLog 4 jConfigListenerだった.サービスを再起動することなく、印刷ログのレベルをいつでも調整するために使用します.意外に便利さを享受していないで、かえって多くの問題が発生して、自分が少しよく研究していないことを責めるしかありません.
web.xml

<context-param>
	<param-name>webAppRootKey</param-name>
		<param-value>message.web.root</param-value>
	</context-param>

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>

	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>60000</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

log4j.properties構成

layoutPattern=[%d{HH:mm:ss}] %-5p : %m%n
log.file=${message.web.root}/logs/app.log

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${log.file}
log4j.appender.logfile.Append=true
log4j.appender.logfile.DatePattern='.'yyyyMMdd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=${layoutPattern}

実際に注意しなければならないのは、アプリケーションサーバの下にspringを使用するLog 4 jConfigListenerがweb環境におけるwebAppRootKey値を変更する必要があることです(この値は、実際にはwebアプリケーションのルートディレクトリが環境変数名であり、log 4 jプロファイルにwebディレクトリに対するパスがあれば書く必要はありません).
さもないと2つのデフォルト値web.rootは環境変数で競合し、2番目のアプリケーションの起動に失敗します.