Thank all , I figure it out , I was trying log4j to output catalina.out at 
first ,and it did't work because swallowOptupt attribute didn't set .That 
is important and it discribed in the offical documentation , according to 
documentation 

====================================================================================================================
When running Tomcat on unixes, the console output is usually redirected to 
the file named catalina.out. The name is configurable using an environment 
variable. (See the startup scripts). Whatever is written to 
System.err/out will be caught into that file. That may include:
Uncaught exceptions printed by java.lang.ThreadGroup.uncaughtException(..)
Thread dumps, if you requested them via a system signal
When running as a service on Windows, the console output is also caught 
and redirected, but the file names are different.
The default logging configuration in Apache Tomcat writes the same 
messages to the console and to a log file. This is great when using Tomcat 
for development, but usually is not needed in production.
Old applications that still use System.out or System.err can be tricked by 
setting swallowOutput attribute on a Context. If the attribute is set 
to true, the calls to System.out/err during request processing will be 
intercepted, and their output will be fed to the logging subsystem using 
thejavax.servlet.ServletContext.log(...) calls.
Note, that the swallowOutput feature is actually a trick, and it has its 
limitations. It works only with direct calls to System.out/err, and only 
during request processing cycle. It may not work in other threads that 
might be created by the application. It cannot be used to intercept 
logging frameworks that themselves write to the system streams, as those 
start early and may obtain a direct reference to the streams before the 
redirection takes place.
====================================================================================================================
and it is my log4j.properties setting below , it totally work now . 

============================================================================================================
log4j.rootLogger=INFO, CATALINA, R

# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.out
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.base}/logs/webapps2.out
log4j.appender.R.Append=true
log4j.appender.R.Encoding=UTF-8
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO,
 
CATALINA
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[jacky.com]=INFO,
 
R
==============================================================================================================

Reply via email to