如何在使用java启动服务时写入日志文件
大家好,我创建了一个java文件,在java中我编写了启动、停止和重新启动windows服务的代码,我想创建一个日志文件,并将windows服务的输出作为控制台写入,如果有人知道,请给出建议 我使用代码停止服务如何在使用java启动服务时写入日志文件,java,jsp,Java,Jsp,大家好,我创建了一个java文件,在java中我编写了启动、停止和重新启动windows服务的代码,我想创建一个日志文件,并将windows服务的输出作为控制台写入,如果有人知道,请给出建议 我使用代码停止服务 public static void stopService(String serviceName) throws IOException, InterruptedException { String executeCmd = "cmd /c net
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();
现在在输出和错误字符串中,您有了您执行的进程的“标准输出”和“标准错误”