1

みなさん、こんにちは私はJavaファイルを作成しました。そのJavaで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");
    }

}
4

3 に答える 3

1

おそらくこれを達成するための最良の方法はLog4Jです。耐え難いように見える前にそれを使用したことがない場合でも、必要に応じて、チェリーを選ぶための優れたチュートリアルがたくさんあります。LogFactoryをクラス定義に入れてから、log.info.println( "servicestarting")のような行をポップします。注目すべきもう1つのキーワードはFileAppenderです。(申し訳ありませんが、私の電話から書いて、これ以上の参考文献はありません!)

于 2012-10-17T06:44:50.893 に答える
0

最善の解決策は、ロギング API を使用することです。http: //www.vogella.com/articles/Logging/article.html チュートリアルを参照してください。または、他の簡単なオプションは、コマンドを実行した出力をテキストファイルにリダイレクトすることです。コマンドを変更する

String executeCmd = "cmd /c net stop \" + serviceName + "\"+" >> "+ fileName".

于 2012-10-17T06:52:04.673 に答える
0

コマンドの出力を取得するには、次のようにします。

    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();

そして、出力とエラー文字列には、実行したプロセスの「標準出力」と「標準エラー」があります。

于 2012-10-17T20:05:13.477 に答える