![](/img/trans.png)
[英]How can I access tomcat log files from Java web application deployed on it?
[英]How do I log from inside my web application in Tomcat 6
如何从Tomcat 6上部署的Web应用程序中进行登录? 我应该在哪里期望记录输出(内部tomcat日志文件,还是会生成另一个日志文件)? 我看到了大量的文档,但我很难找到上述问题的直接答案。 我应该在哪里看到日志记录显示(目前log4j没有生成日志文件,并且它没有显示在我的控制台中)。 我正在尝试关注http://www.laliluna.de/articles/log4j-tutorial.html 。
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=info
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug, stdout
在我的应用中,我定义了一个日志对象:
private static org.apache.log4j.Logger log = Logger.getLogger(MyClass.class);
log.error("LOGGING!");
谢谢您的帮助。
要尝试的两件事:
1:将test.log更改为/tmp/test.log,以便准确了解文件的位置。
2:将log4j.properties配置文件与log4j-1.2.15.jar文件一起放在apache-tomcat-6.0.x / lib目录中。 并且在webapps / * / WEB-INF / lib中没有任何log4j文件
这就是我这样做的方式,它为我工作。 这是我的log4j.properties的一个有用的片段(如果你使用这个配置,请记得做一个mk / tmp / logs)
log4j.rootLogger=debug, root
log4j.appender.root=org.apache.log4j.FileAppender
log4j.appender.root.layout = org.apache.log4j.PatternLayout
log4j.appender.root.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.root.file = /tmp/logs/root.log
log4j.appender.root.append = true
log4j.category.mside = DEBUG,msideAppender
log4j.category.javashare = DEBUG,msideAppender
log4j.additivity.mside = false
log4j.additivity.mside.msideAppender = false
log4j.additivity.javashare = false
#Define msideAppender.
log4j.appender.msideAppender = org.apache.log4j.RollingFileAppender
log4j.appender.msideAppender.MaxFileSize=10MB
log4j.appender.msideAppender.MaxBackupIndex=7
log4j.appender.msideAppender.file = /tmp/logs/mside.log
log4j.appender.msideAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.msideAppender.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.msideAppender.append = true
IIRC Tomcat v4 / v5将标准输出发送到catalina.out文件,因此使用控制台appender的任何log4j输出也会转到该文件。 不过,不确定这是否仍然适用于较新版本的Tomcat。
如果将log4j配置放入Web应用程序的类路径中,例如在WEB-INF / classes /中,log4j配置将被log4j选中。 确保您的log4j.jar位于WEB-INF / lib中。
您定义的ConsoleAppender的输出(登录stdout)将作为任何Tomcat标准输出输出到$ {CATALINA_BASE} /logs/catalina.out。
对于RollingFileAppender,您应该定义正确的路径。 如果希望Web应用程序的日志显示在Tomcat的日志目录中,请将此appender的文件更改为:
log4j.appender.file.File=${catalina.base}/logs/test.log
顺便说一句,使用系统属性-Dlog4j.debug系统属性。 这应该告诉你log4j发送输出的位置。
此外,如果您的tomcat安装在* nix系统中,或者如果您在安装了cygwin的Windows上运行,则可以使用find命令检测在向Tomcat发送HTTP请求后立即更改的文件(您知道应该产生日志输出)
cd <your tomcat install>
ls -ltr `find . -type f -ls` | tail -10
这应该会显示最近更新或更改的10个文件。 但是,如果您的应用中的文件中的文件名中包含空格,则无法使用。
我尝试了以下方式,并确保它运作良好:
然后在tomcat下更新你的catalina.sh,在下面添加类似的行:
JAVA_OPTS = “ - Dlog4j.configuration =文件:$ {} yourownlog4jpath”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.