2014-10-08 44 views
0

我们已经有了一个遗留的Java应用程序,运行在Tomcat上。它以不一致的方式记录它的事件,有时甚至依靠System.out/err。这些stdout/stderr记录最终会在catalina.log中与“正确记录”事件混合在一起。我们希望将stdout/stderr日志流分成单独的文件(并最终摆脱它们),但我们不知道如何去做。服务器运行默认的JULI配置,但我们对任何其他选项(如SLF4J + Logback)都是开放的。Tomcat System.out重定向

+0

您是否在寻求如何将日志框架附加到应用程序的建议?你打算修改应用程序的源代码来重定向日志,或者你正在寻找一种方法来重新定向它的日志记录,因为它已经被部署了(因为这看起来很困难) – mmcrae 2014-10-08 16:11:25

+0

我们最终会修改源代码(移除System.out。打印和使用正确的日志记录),但现在我要求提供有关部署配置的建议。我希望Tomcat不要将stdout/stderr混合到catalina.log中,而是将它们发送到其他文件。 – discrete 2014-10-08 16:16:08

+0

然后任何高级日志记录框架都会执行--log4j,slf4j + logback,log4j v2,...只需将记录器命名为唯一名称,用日志记录调用替换Syste.out/err println(),并配置日志appender将其放入单独的文件。 – 2014-10-08 16:47:05

回答

0

这可以全部解释:Log4J只需将log4j.jar和log4j.properties放入Web应用程序的WEB-INF/lib和WEB-INF /类中。用下面的内容创建一个名为log4j.properties,并将其保存成将停止输出到标准输出log4j.properties的$CATALINA_BASE/lib

例子:

log4j.rootLogger=INFO, yourapp 

#Define all the appenders 

log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina. 
log4j.appender.CATALINA.Append=true 
log4j.appender.CATALINA.Encoding=UTF-8 

#Roll-over the log once per day 
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.LOCALHOST=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost. 
log4j.appender.LOCALHOST.Append=true 
log4j.appender.LOCALHOST.Encoding=UTF-8 
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log' 
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout 
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n 

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

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

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.Encoding=UTF-8 
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.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, LOCALHOST 
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\INFO, MANAGER 
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\INFO, HOST-MANAGER 

#You can define your Applog here: 

log4j.appender.yourapp=org.apache.log4j.RollingFileAppender 
log4j.appender.yourapp.File=${catalina.base}/logs/yourapp.log 
log4j.appender.yourapp.MaxFileSize=100MB 
log4j.appender.yourapp.MaxBackupIndex=10 
log4j.appender.yourapp.layout=org.apache.log4j.PatternLayout 
log4j.appender.yourapp.layout.ConversionPattern=%d %p [%c] (%t) - <%m>%n 

希望这有助于!