Java 我怎样才能理顺我的Tomcat日志记录?
我正在使用Tomcat配置,但我没有这样做,我希望得到任何帮助来修复日志记录。由于未知原因,有三个与日志记录相关的-D参数被传递到启动中。过程如下所示:Java 我怎样才能理顺我的Tomcat日志记录?,java,hibernate,tomcat,logging,Java,Hibernate,Tomcat,Logging,我正在使用Tomcat配置,但我没有这样做,我希望得到任何帮助来修复日志记录。由于未知原因,有三个与日志记录相关的-D参数被传递到启动中。过程如下所示: ./bin/java -Djava.util.logging.config.file=CATALINA_BASE_DIR_HERE/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dlog4j.
./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数据JPA和Hibernate。要进行调试,已启用showSql。所有查询都出来了,但都指向
localhost.DATE.log
文件。谁能告诉我如何修复,使所有语句都进入log4j指定文件吗?如果将showSql
设置为true,hibernate将把SQL语句打印到SystemOut。您应该将log4j.logger.org.hibernate.SQL=DEBUG
添加到log4j配置中,这样hibernate也可以记录SQL语句。(原因可在中找到)
默认情况下,Tomcat使用java.util.logging
API进行所有内部日志记录。因此,输出转到您提到的localhost.DATE.log
您可以更改配置,请参阅章节
(对于Tomcat 6.x~8.x)如果将
showSql
设置为true,hibernate将把SQL语句打印到SystemOut。您应该将log4j.logger.org.hibernate.SQL=DEBUG
添加到log4j配置中,这样hibernate也可以记录SQL语句。(原因可在中找到)
默认情况下,Tomcat使用java.util.logging
API进行所有内部日志记录。因此,输出转到您提到的localhost.DATE.log
您可以更改配置,请参阅章节
(对于Tomcat 6.x~8.x)删除logging.properties文件会使-D消失。但是,即使我根据引用添加了log4j.properties文件,Hibernate的输出也没有显示更多关于它的信息——该引用并没有真正说明如何将SystemOut重定向到我的appender。我该怎么做?在尝试only=INFO之前,我没有查看引用,因为它们是如何添加到localhost文件的。没有工作,所以我检查了引用-这解释了为什么需要=DEBUG!这很有效-谢谢你!删除logging.properties文件使-D消失。但是,即使我根据引用添加了log4j.properties文件,Hibernate的输出也没有显示更多关于它的信息——该引用并没有真正说明如何将SystemOut重定向到我的appender。我该怎么做?在尝试only=INFO之前,我没有查看引用,因为它们是如何添加到localhost文件的。没有工作,所以我检查了引用-这解释了为什么需要=DEBUG!这很有效-谢谢你!