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

时间:2010-04-07 01:52:13

标签: java log4j tomcat6

如何从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!");

感谢您的帮助。

5 个答案:

答案 0 :(得分:4)

要尝试的两件事:

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

答案 1 :(得分:2)

IIRC Tomcat v4 / v5将标准输出发送到catalina.out文件,因此使用控制台appender的任何log4j输出也会转到该文件。不过,不确定这是否仍然适用于较新版本的Tomcat。

答案 2 :(得分:2)

如果将log4j放入Web应用程序的类路径中,则log4j将会选择log4j配置,例如:在WEB-INF / classes /中。确保您的log4j.jar位于WEB-INF / lib。

您定义的ConsoleAppender的输出(登录stdout)将转至$ {CATALINA_BASE} /logs/catalina.out,与任何Tomcat标准输出一样。

对于RollingFileAppender,您应该定义正确的路径。如果希望Web应用程序的日志显示在Tomcat的日志目录中,请将此appender的文件更改为:

log4j.appender.file.File=${catalina.base}/logs/test.log

答案 3 :(得分:1)

BTW,使用系统属性-Dlog4j.debug系统属性。那个应该告诉你log4j在哪里发送它的输出。

此外,如果您的tomcat安装在* nix系统中,或者如果您在安装了cygwin的Windows上运行,则可以使用 find 命令检测发送后立即更改的文件对Tomcat的HTTP请求(您知道应该生成日志记录输出)

cd <your tomcat install>    
ls -ltr `find . -type f -ls` | tail -10

这应该显示最近更新或更改的10个文件。但是,如果您的应用中的文件中的文件名中包含空格,则无效。

答案 4 :(得分:0)

我尝试过以下方法并确保其运作良好:

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

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