Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用java启动服务时写入日志文件_Java_Jsp - Fatal编程技术网

如何在使用java启动服务时写入日志文件

如何在使用java启动服务时写入日志文件,java,jsp,Java,Jsp,大家好,我创建了一个java文件,在java中我编写了启动、停止和重新启动windows服务的代码,我想创建一个日志文件,并将windows服务的输出作为控制台写入,如果有人知道,请给出建议 我使用代码停止服务 public static void stopService(String serviceName) throws IOException, InterruptedException { String executeCmd = "cmd /c net

大家好,我创建了一个java文件,在java中我编写了启动、停止和重新启动windows服务的代码,我想创建一个日志文件,并将windows服务的输出作为控制台写入,如果有人知道,请给出建议 我使用代码停止服务

      public static void stopService(String serviceName) throws IOException,
        InterruptedException {

    String executeCmd = "cmd /c net stop \"" + serviceName + "\"";
    Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
    int processComplete = runtimeProcess.waitFor();

    System.out.println("processComplete: " + processComplete);

    if (processComplete == 1) {// if values equal 1 process failed
        System.out.println("Service failed");
    }

    else if (processComplete == 0) {
        System.out.println("Service Success");
    }

}

可能实现这一点的最佳方法是Log4J。如果你以前没有使用过它,它可能看起来很霸道,但是如果你需要的话,有很多很好的教程可供选择。将LogFactory放在类定义中,然后弹出诸如log.info.println(“服务启动”)之类的行。另一个需要注意的关键字是FileAppender。(很抱歉,没有更好的参考资料,在我的手机上写!)

实现这一点的最佳方法可能是Log4J。如果你以前没有使用过它,它可能看起来很霸道,但是如果你需要的话,有很多很好的教程可供选择。将LogFactory放在类定义中,然后弹出诸如log.info.println(“服务启动”)之类的行。另一个需要注意的关键字是FileAppender。(很抱歉,没有更好的参考资料,从我的手机上写!)

最好的解决方案是使用一些日志API看看教程。 或者另一个简单的选项是重定向在某个文本文件中执行命令的输出。更改命令


String executeCmd=“cmd/c net stop\”+serviceName+“\”+“+”>“+fileName”

最好的解决方案是使用一些日志API来查看教程。 或者另一个简单的选项是重定向在某个文本文件中执行命令的输出


String executeCmd=“cmd/c net stop\”+serviceName+“\”+“\”+“>>“+fileName”

要获得命令的输出,可以执行以下操作:

    String lineSeparator = System.getProperty("line.separator");
    stderr = runtimeProcess.getErrorStream();
    stdout = runtimeProcess.getInputStream();


    // clean up if any output in stdout
    BufferedReader brCleanUp =
            new BufferedReader(new InputStreamReader(stdout));
    StringBuilder output = new StringBuilder();
    String line;
    while ((line = brCleanUp.readLine()) != null) {
        output.append(line).append(lineSeparator);
    }
    brCleanUp.close();

     // clean up if any output in stderr
    brCleanUp =
            new BufferedReader(new InputStreamReader(stderr));
    StringBuilder error = new StringBuilder();
    while ((line = brCleanUp.readLine()) != null) {
        error.append(line).append(lineSeparator);
    }
    brCleanUp.close();

现在,在输出和错误字符串中,您有了所执行进程的“标准输出”和“标准错误”。

为了获得命令的输出,您可以执行以下操作:

    String lineSeparator = System.getProperty("line.separator");
    stderr = runtimeProcess.getErrorStream();
    stdout = runtimeProcess.getInputStream();


    // clean up if any output in stdout
    BufferedReader brCleanUp =
            new BufferedReader(new InputStreamReader(stdout));
    StringBuilder output = new StringBuilder();
    String line;
    while ((line = brCleanUp.readLine()) != null) {
        output.append(line).append(lineSeparator);
    }
    brCleanUp.close();

     // clean up if any output in stderr
    brCleanUp =
            new BufferedReader(new InputStreamReader(stderr));
    StringBuilder error = new StringBuilder();
    while ((line = brCleanUp.readLine()) != null) {
        error.append(line).append(lineSeparator);
    }
    brCleanUp.close();
现在在输出和错误字符串中,您有了您执行的进程的“标准输出”和“标准错误”