Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat Log4j在catalina-date.log中登录_Tomcat_Logging_Log4j - Fatal编程技术网

Tomcat Log4j在catalina-date.log中登录

Tomcat Log4j在catalina-date.log中登录,tomcat,logging,log4j,Tomcat,Logging,Log4j,我有一个servlet,我想登录文件:catalina-.log。配置文件log4j.properties(位于catalina.home/lib中)与(log4j段落)中的相同: 问题是它没有登录到catalina-.log,而是登录到catalina。似乎追加器配置不正确。文件catalina似乎是从配置中的log4j.appender.catalina.file=${catalina.home}/logs/catalina.创建的 有人能帮我解决这个问题吗?如果您想在使用启动脚本启动Tom

我有一个servlet,我想登录文件:catalina-.log。配置文件log4j.properties(位于catalina.home/lib中)与(log4j段落)中的相同:

问题是它没有登录到catalina-.log,而是登录到catalina。似乎追加器配置不正确。文件catalina似乎是从配置中的log4j.appender.catalina.file=${catalina.home}/logs/catalina.创建的


有人能帮我解决这个问题吗?

如果您想在使用启动脚本启动Tomcat时在win32上旋转logs/catalina.out,一个选项是安装一个日志记录器,比如纪年(这可能是一个*NIX唯一的选项)然后修改catalina.out,以将标准输出传输到该进程,而不是重定向到文件

更新:一个更好的选择(通常在win32上)可能是使用Tomcat的服务安装程序并将Tomcat作为服务运行,但我不认为这会使旋转日志文件变得更容易


当然,最好的选择是首先不要写入标准输出,以免需要旋转此日志文件。

您的log4j.properties文件在哪里?文件catalina.out来自Tomcat的启动脚本,是打印到标准输出的消息的接收者——它与log4j无关。这不是真的。我还有一个stdout的配置,它在控制台中打印消息,但不在日志文件中。Tomcat的启动脚本将stdout重定向到CATALINA_BASE/logs/CATALINA.out。如果为log4j appender的文件指定相同的路径,则其中一个将与另一个发生碰撞。我强烈建议您不要使用上面所示的策略。好的,但是您有什么解决方案吗?我想将appender添加到应用程序中的日志记录程序,以及从中记录的所有内容,以登录catalina.out(catalina-.log)。您的部署环境是什么?Win32还是*NIX?还有,如何启动Tomcat?(解决方案可能取决于您如何操作)。嗯,我认为这不是使用其他记录器的问题。问题是配置文件不能正常工作,我不知道为什么。它会创建一个新的“catalina”文件,而不是创建一个新的“catalina-.log”文件您在说什么配置文件?Tomcat不使用任何日志记录配置来创建logs/catalina.out文件:它使用bin/catalina.bat文件中的输出重定向:它总是记录到logs/catalina.out,除非您执行了in并更改了脚本。这里根本没有配置,我不是Tomcat的专家,但我认为它会将它重定向到您放在catalina.home/lib中的配置。看起来日志配置的这一部分并没有被考虑。log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'。它不创建catalina-date.log,只创建一个名为catalina的文件。问题很明显,Tomcat在CATALINA_HOME/lib中没有任何日志配置。如果你把一些东西放在那里,除非有额外的配置,否则它可能不会被读取。无论如何,我向您保证logs/catalina.out完全由启动Tomcat的脚本控制。请随意阅读脚本来确认这一点。好吧,这并没有改变我问题的主题。从中,您可以检查是否可以更改appender,这与tomcat在何处实现日志记录无关。我可以配置它,问题是它不可配置的日期
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