Java 使用FileWriter记录servlet的进度

Java 使用FileWriter记录servlet的进度,java,servlets,logging,Java,Servlets,Logging,我试图创建一个文本文件,在其中记录servlet执行的操作,因为它是远程运行的,这是调试它的最佳机会 在它的构造函数中,我是这样做的 logFile = new FileWriter("/absolutePath/WEB-INF/classes/a.txt"); fout = new BufferedWriter(logFile); fout.write("Server is up and awaiting connections on port: " + PORT+"\n"); 但是,永远不

我试图创建一个文本文件,在其中记录servlet执行的操作,因为它是远程运行的,这是调试它的最佳机会

在它的构造函数中,我是这样做的

logFile = new FileWriter("/absolutePath/WEB-INF/classes/a.txt");
fout = new BufferedWriter(logFile);
fout.write("Server is up and awaiting connections on port: " + PORT+"\n");

但是,永远不会创建该文件。我走错路了吗?为什么我什么都没看到?还有其他调试servlet的简单建议吗?请帮帮我,我甚至无法开始调试它。

您应该使用日志框架,例如log4j来进行日志记录

  • 检查服务器上的错误日志。它可能有写失败的线索
  • 如果没有任何帮助,请尝试更改日志记录级别并重新启动服务器
  • 另外,请查看java.util.logging。您应该能够使用
    Logger.getLogger(“自定义记录器”)(惯例是使用类名:
    this.class.getName()

  • 资料来源:这一次我也参加过。

    你听说过远程调试吗?请使用调试,如果有错误,您将理解错误。还可以尝试使用System.getProperty(“user.dir”),它将为您提供运行程序的当前目录


    另请参见

    您可以尝试以下代码。此日志文件是使用log4j创建的

    public class Logger
    {
    
    protected static FileHandler m_FileHandler;
    
    protected static Logger m_logger = null;
    
    public static void startAppLog()
    {
        try {
            m_FileHandler = new FileHandler("D:\\test" + "\\" + "LogFile.log", true);
            final LogManager logMngr = LogManager.getLogManager();
            m_logger = Logger.getLogger(NmsLogger.class.getName());
            }
         catch (final SecurityException e) {
            e.printStackTrace();
        }
        catch (final IOException e) {
            e.printStackTrace();
        }
    }
    

    我认为您不能在WEB-INF文件夹下创建/更新文件。我建议将您的日志文件移到项目外部。我认为在WEB-INF文件夹中创建一个文件在他的情况下不是问题,但当应用程序将被重新部署时,您的日志将丢失。也许你走错了路。尝试使用绝对(简单)路径来查看发生了什么。另外一件事。使用writer后关闭它。我在哪里可以看到记录的语句?在档案里?在控制台里?在网站上?文件输出可以工作,但是如果我们已经有非常好的库,为什么要手工处理呢?你说它是远程运行的。这在你的网络上吗?是否已尝试远程调试会话?对,但这些日志语句将显示在哪里?如果在文件中,它的名称是什么?我正在运行tomcat 5。您可以将其配置为在任何地方进行日志记录。如果我使用log4j,在哪里可以看到记录的语句?顺便问一下,我可以在哪里找到我的服务器的日志?也可能是您的权限阻止您创建文件,或者您的绝对路径错误。这取决于您正在运行的服务器。学校项目的tomcat共享服务器Log4J也可以正常工作。您必须编写一个自定义文件处理程序,以便以任何方式写入特定文件,这可能会使事情过于复杂。对不起,我忽略了你问题的那一部分:你想写一个特定的文件。不,我不知道远程调试。我应该把这种代码放在哪里?在servlet类中?文件将出现在哪里?在servlet中命名的新类中创建此文件。并且将在位置“D:\\test\\LogFile.log”中创建日志文件