Log4j不将日志写入一个Websphere服务器上的文件并写入其他文件

问题描述:

我有maven应用程序,其中包含log4j.properties,并设置为将日志写入指定文件而不是控制台。当我在其中一台websphere服务器上运行EAR时,它会按预期创建文件并将日志写入其中。但是,当我在其他webspehere服务器上运行相同的EAR时,它将写入控制台而不是将日志写入指定的文件。我检查了权限,一切似乎都没有问题。请帮助我确定问题所在。提前致谢。Log4j不将日志写入一个Websphere服务器上的文件并写入其他文件

# CONSOLE APPENDER (stdout) 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=DEBUG 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d] [%t] %-5p %20c - %m%n 

# ROLLING FILE APPENDER (on the file system) for memberpolicyattributesservice code 
log4j.appender.xxxxService=org.apache.log4j.RollingFileAppender 
log4j.appender.xxxxService.Threshold=DEBUG 
log4j.appender.xxxxService.File=/var/logs/xxxServer1/xxxServiceLog.log 
log4j.appender.xxxxService.layout=org.apache.log4j.PatternLayout 
log4j.appender.xxxxService.layout.ConversionPattern=%d{[email protected]:mm:ss} %-5p (%13F:%L) %3x - %m%n 
log4j.appender.xxxxService.MaxFileSize=10000KB 
log4j.appender.xxxxService.MaxBackupIndex=30 
log4j.appender.xxxxService.layout=org.apache.log4j.PatternLayout 
log4j.appender.xxxxService.layout.ConversionPattern=[%d] [%t] %-5p %20c - %m%n 



# ROLLING FILE APPENDER (on the file system) for hiberate, open source code log files 
log4j.appender.open_source_code=org.apache.log4j.RollingFileAppender 
log4j.appender.open_source_code.layout=org.apache.log4j.PatternLayout 
log4j.appender.open_source_code.Threshold=DEBUG 
#message format:YYYY-MM-DD HH:mm:ss,ms [ThreadId] <PRIORITY> classname.message 
log4j.appender.open_source_code.layout.ConversionPattern=%d [%t]<%-5p> %c.%m \r\n 
#file that will be logged to 
log4j.appender.open_source_code.File=/var/logs/xxxServer1/open_source_code.log 
log4j.appender.open_source_code.Append=true 
log4j.appender.open_source_code.MaxFileSize=1024KB 
log4j.appender.open_source_code.MaxBackupIndex=5 


#turn on log4j verbose mode 
log4j.debug = true 

# Set root logger level to INFO and its appender to DSInstrumentor,stdout. 
log4j.rootLogger=DEBUG,stdout,xxxxService 


# YOUR CATEGORIES (to customize logging per class/pkg/project/etc) 
log4j.category.fatal=FATAL,xxxxService 
log4j.category.error=ERROR,xxxxService 


#This will also enable the logging for all the children (packages and classes) of this package 

log4j.logger.com.xxxxx=ALL,xxxxService 

# Print only messages of level INFO in the open source code 
log4j.logger.org=INFO,open_source_code 

你已经在你的根记录(DEBUG,标准输出,xxxxService),但xxxxService记录器定义了多个记录器看起来像他们必然要在文件系统上的系统之一:

log4j.appender .open_source_code.File =/var/logs/xxxServer1 /open_source_code.log

确保路径对于WAS群集中的每个服务器都有效。

请注意,您应该避免在远程服务器上使用debug和stdout。这适用于工作站本地开发,但不适用于远程机器。相反,请在各个部署层上提供不同的log4j属性。这使您可以自定义日志位置或appender(例如桌面上的c:\ temp或CONSOLE,但是所有远程计算机上的/ var/logs ...)以及日志级别(桌面的DEBUG,可能是QA的INFO或分段,WARN或ERROR进行生产)。

+0

感谢您的回复。我甚至尝试删除根记录器中的多个记录器,发现它在服务器上无法工作。感谢关于日志级别的建议,但我试图在该服务器上首次部署应用程序,因此日志级别为“调试”而不是“信息”。 –

+0

这两个服务器上的路径是相同的,但日志记录仍在写入其中一台服务器上的控制台,而它在其他服务器上正常工作。我仍然不明白是否需要更改任何服务器级别的配置。如果您知道任何问题,请告诉我。 –