需要帮助在Windows (Java, NetBeans)上的Tomcat5中运行log4j的定制类/jar



我正在尝试实现为log4j编写的自定义类,并将其与Windows上的Tomcat5结合使用。现在,请记住,tomcat5和log4j都已正确安装和配置,并且工作正常。然而,添加这个类并不能产生预期的结果,这正是本文的重点。我从下面的链接发现了这个类:http://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender#comment-749)。

我编写了这个类,并在类声明上面加上了以下内容:

package LoggingOutputStream;
import java.io.PrintStream;
import java.io.OutputStream;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;  

然后,我成功编译了它。然后链接声明使用类,写入:

System.setErr(new PrintStream(new LoggingOutputStream(
    System.err, Logger.getLogger("outLog"), Level.ERROR)));

我是这么写的:

import java.io.PrintStream;
import LoggingOutputStream.LoggingOutputStream;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
public class UseLoggingOutputStream {
  public void SetErr() {
    System.setErr(new PrintStream(new LoggingOutputStream(Logger.getLogger("outLog"), Level.ERROR)));
  }
}

一个重要的细节是LoggingOutPutstream构造函数接受2个输入,但是链接中的作者使用3个输入调用它,这会产生一个错误。我删除了"系统"。参数,文件编译成功。

然后对这两个类进行jar并将jar文件复制到tomcat5/common/lib文件夹中。最后,我修改了log4j。属性文件与从链接中指定的内容:

log4j.logger.outLog=error, out_log
log4j.appender.out_log=org.apache.log4j.RollingFileAppender
log4j.appender.out_log.file=/logs/error.log
log4j.appender.out_log.MaxFileSize=10MB
log4j.appender.out_log.threshold=error

我启动了Apache Tomcat5服务,但在logs文件夹中没有看到error.log。我错过什么了吗?还有其他人成功地做到了吗?

我将真诚地感谢任何建议。谢谢你。

问题:您正在使用绝对路径/logs/error.log

您需要找到Tomcat目录。简单如下:log4j.appender.out_log.file=${catalina.home}/logs/error.log

有点过时,但对其他人仍然有帮助:)

我也遇到过这个问题,我似乎不明白为什么它什么都不写。我甚至尝试直接写入控制台,但没有任何输出。最后,我查找了PrintStream.class,发现您必须通过boolean来自动刷新字节,如下所示:

System.setErr(new PrintStream(new LoggingOutputStream(Logger.getLogger("outLog"), Level.ERROR), true));

这让它为我工作。希望能有所帮助!

相关内容

  • 没有找到相关文章

最新更新