我正在处理我没有做过的Tomcat配置,并希望有任何帮助来修复日志记录。由于未知原因,有三个与传递到启动的日志记录相关的参数。过程如下:
./bin/java -Djava.util.logging.config.file=CATALINA_BASE_DIR_HERE/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Dlog4j.configuration=file:CATALINA_BASE_DIR_HERE/tomcat/conf/log4j.properties ...
logging.properties文件的相关部分如下所示。我相信这是标准的。
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
...
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
为了完整性,这里是log4j.properties文件的相关部分:
log4j.rootLogger=INFO, logfile
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.File=MY_DIR/my_log.txt
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = [%d{ABSOLUTE}] [%t] %-5p [%c] - %m%n
log4j.appender.logfile.Append=true
# per first answer given below, added:
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, logfile
在今天之前,没有真正的问题 - 所有日志数据都根据需要转到log4j文件。在这个Tomcat中部署的war文件使用Spring Data JPA和Hibernate。要进行调试,showSql
已启用。所有查询都出来了,但是出现在localhost.DATE.log
文件中。任何人都可以告诉如何解决所有语句转到log4j指定文件?
答案 0 :(得分:2)
如果将showSql
设置为 true ,则hibernate会将SQL语句打印到SystemOut。您应该将log4j.logger.org.hibernate.SQL=DEBUG
添加到log4j配置,因此hibernate也可以记录SQL语句。 (原因可以在this answer)
默认情况下,Tomcat使用 java.util.logging
API进行所有内部日志记录。所以你提到的输出转到localhost.DATE.log
。
您可以更改配置,请参阅Using Log4j部分
(对于Tomcat 6.x~8.x)