繁体   English   中英

如何从Tomcat 6中的Web应用程序内部进行登录

[英]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个文件。 但是,如果您的应用中的文件中的文件名中包含空格,则无法使用。

我尝试了以下方式,并确保它运作良好:

  1. 把你自己的log4j.properties放在路径上;
  2. 然后在tomcat下更新你的catalina.sh,在下面添加类似的行:

    JAVA_OPTS = “ - Dlog4j.configuration =文件:$ {} yourownlog4jpath”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM