Skip to content

Commit

Permalink
feat: log external commands output separately
Browse files Browse the repository at this point in the history
  • Loading branch information
jogerj committed Oct 22, 2023
1 parent 76cea10 commit d5752b4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 25 deletions.
25 changes: 13 additions & 12 deletions src/main/java/com/tonikelope/megabasterd/MainPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import static java.awt.event.WindowEvent.WINDOW_CLOSING;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
import static java.lang.Integer.parseInt;
Expand Down Expand Up @@ -98,6 +96,7 @@ public final class MainPanel {
private static boolean _use_smart_proxy;
private static boolean _run_command;
private static String _run_command_path;
private static boolean _run_command_log;
private static String _font;
private static SmartMegaProxyManager _proxy_manager;
private static String _language;
Expand Down Expand Up @@ -270,6 +269,7 @@ public MainPanel() {
loadUserSettings();

if (_debug_file) {
_run_command_log = true;

PrintStream fileOut;

Expand Down Expand Up @@ -871,27 +871,28 @@ public static synchronized void run_external_command() {
if (_run_command && (LAST_EXTERNAL_COMMAND_TIMESTAMP == -1 || LAST_EXTERNAL_COMMAND_TIMESTAMP + RUN_COMMAND_TIME * 1000 < System.currentTimeMillis())) {

if (_run_command_path != null && !_run_command_path.equals("")) {
Logger logger = Logger.getLogger(MainPanel.class.getName());
try {
StringTokenizer st = new StringTokenizer(_run_command_path);
String[] cmdarray = new String[st.countTokens()];
for (int i = 0; st.hasMoreTokens(); i++)
cmdarray[i] = st.nextToken();

ProcessBuilder pb = new ProcessBuilder(cmdarray)
.redirectErrorStream(true);
Process pr = pb.start();
ProcessBuilder pb;

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
logger.log(Level.INFO, "[Command output] " + line);
if (_run_command_log) {
File externalCmdLog = new File(MainPanel.MEGABASTERD_HOME_DIR + "/MEGABASTERD_EXTERNAL_CMD.log");
pb = new ProcessBuilder(cmdarray)
.redirectOutput(ProcessBuilder.Redirect.appendTo(externalCmdLog))
.redirectError(ProcessBuilder.Redirect.appendTo(externalCmdLog));
} else {
pb = new ProcessBuilder(cmdarray);
}
Process pr = pb.start();

pr.waitFor();
in.close();
pr.destroy();
} catch (IOException | InterruptedException ex) {
logger.log(Level.SEVERE, ex.getMessage());
LOG.log(Level.SEVERE, ex.getMessage());
}

LAST_EXTERNAL_COMMAND_TIMESTAMP = System.currentTimeMillis();
Expand Down
23 changes: 10 additions & 13 deletions src/main/java/com/tonikelope/megabasterd/SettingsDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@
import java.awt.Frame;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Files;
Expand Down Expand Up @@ -2902,29 +2900,28 @@ private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEve

private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed
// TODO add your handling code here:
Logger logger = Logger.getLogger(MiscTools.class.getName());

if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) {
try {
StringTokenizer st = new StringTokenizer(run_command_textbox.getText().trim());
String[] cmdarray = new String[st.countTokens()];
for (int i = 0; st.hasMoreTokens(); i++)
cmdarray[i] = st.nextToken();

ProcessBuilder pb = new ProcessBuilder(cmdarray)
.redirectErrorStream(true);
ProcessBuilder pb;
if (debug_file_checkbox != null && debug_file_checkbox.isSelected()) {
File externalCmdLog = new File(MainPanel.MEGABASTERD_HOME_DIR + "/MEGABASTERD_EXTERNAL_CMD.log");
pb = new ProcessBuilder(cmdarray)
.redirectOutput(ProcessBuilder.Redirect.appendTo(externalCmdLog))
.redirectError(ProcessBuilder.Redirect.appendTo(externalCmdLog));
} else {
pb = new ProcessBuilder(cmdarray);
}
Process pr = pb.start();

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
logger.log(Level.INFO, "[Command output] " + line);
}
pr.waitFor();
in.close();
pr.destroy();
} catch (IOException | InterruptedException ex) {
logger.log(Level.SEVERE, ex.getMessage());
LOG.log(Level.SEVERE, ex.getMessage());
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
Expand Down

0 comments on commit d5752b4

Please sign in to comment.