Merge branch 'feat/debug-vs-stdout' into 'master'

Fix: debug level and log on stdout are not the same

See merge request sheepitrenderfarm/client!302
This commit is contained in:
Laurent Clouet
2024-05-05 10:55:46 +00:00
5 changed files with 39 additions and 10 deletions

View File

@@ -70,6 +70,7 @@ import lombok.Data;
private GPUDevice GPUDevice; private GPUDevice GPUDevice;
private boolean detectGPUs; private boolean detectGPUs;
private boolean printLog; private boolean printLog;
private boolean debugLevel;
private List<Pair<Calendar, Calendar>> requestTime; private List<Pair<Calendar, Calendar>> requestTime;
private long shutdownTime; private long shutdownTime;
private String shutdownMode; private String shutdownMode;
@@ -104,6 +105,7 @@ import lombok.Data;
this.storageDirectory = null; this.storageDirectory = null;
this.setCacheDir(cache_dir_); this.setCacheDir(cache_dir_);
this.printLog = false; this.printLog = false;
this.debugLevel = false;
this.requestTime = null; this.requestTime = null;
this.shutdownTime = -1; this.shutdownTime = -1;
this.shutdownMode = "soft"; this.shutdownMode = "soft";
@@ -141,6 +143,7 @@ import lombok.Data;
c + "GPUDevice: " + GPUDevice + n + c + "GPUDevice: " + GPUDevice + n +
c + "detectGPUs: " + detectGPUs + n + c + "detectGPUs: " + detectGPUs + n +
c + "printLog: " + printLog + n + c + "printLog: " + printLog + n +
c + "debugLog: " + debugLevel + n +
c + "requestTime: " + requestTime + n + c + "requestTime: " + requestTime + n +
c + "shutdownTime: " + shutdownTime + n + c + "shutdownTime: " + shutdownTime + n +
c + "shutdownMode: " + shutdownMode + n + c + "shutdownMode: " + shutdownMode + n +

View File

@@ -33,6 +33,10 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
public class Log { public class Log {
private final String LEVEL_DEBUG = "debug";
private final String LEVEL_INFO = "info";
private final String LEVEL_ERROR = "error";
private static Log instance = null; private static Log instance = null;
private Map<Integer, ArrayList<String>> checkpoints = new HashMap<Integer, ArrayList<String>>(); private Map<Integer, ArrayList<String>> checkpoints = new HashMap<Integer, ArrayList<String>>();
@@ -40,10 +44,12 @@ public class Log {
private DateFormat dateFormat; private DateFormat dateFormat;
private boolean printStdOut; private boolean printStdOut;
private boolean debugLevel;
private String logFile; private String logFile;
private Log(boolean print_, String logDirectory_) { private Log(boolean debugLevel_, boolean print_, String logDirectory_) {
this.debugLevel = debugLevel_;
this.printStdOut = print_; this.printStdOut = print_;
this.logFile = logDirectory_ + File.separator + "sheepit.log"; this.logFile = logDirectory_ + File.separator + "sheepit.log";
this.lastCheckPoint = 0; this.lastCheckPoint = 0;
@@ -56,7 +62,7 @@ public class Log {
} }
public void debug(int point_, String msg_) { public void debug(int point_, String msg_) {
this.append(point_, "debug", msg_); this.append(point_, LEVEL_DEBUG, msg_);
} }
public void info(String msg_) { public void info(String msg_) {
@@ -64,7 +70,7 @@ public class Log {
} }
public void info(int point_, String msg_) { public void info(int point_, String msg_) {
this.append(point_, "info", msg_); this.append(point_, LEVEL_INFO, msg_);
} }
public void error(String msg_) { public void error(String msg_) {
@@ -72,10 +78,13 @@ public class Log {
} }
public void error(int point_, String msg_) { public void error(int point_, String msg_) {
this.append(point_, "error", msg_); this.append(point_, LEVEL_ERROR, msg_);
} }
private synchronized void append(int point_, String level_, String msg_) { private synchronized void append(int point_, String level_, String msg_) {
if (LEVEL_DEBUG.equals(level_) && this.debugLevel == false) {
return;
}
String line = null; String line = null;
try { try {
@@ -128,12 +137,14 @@ public class Log {
if (instance == null) { if (instance == null) {
String path = null; String path = null;
boolean print = false; boolean print = false;
boolean debug = false;
if (config != null) { if (config != null) {
debug = config.isDebugLevel();
print = config.isPrintLog(); print = config.isPrintLog();
path = config.getLogDirectory() == null ? null : config.getLogDirectory(); path = config.getLogDirectory() == null ? null : config.getLogDirectory();
} }
instance = new Log(print, path); instance = new Log(debug, print, path);
} }
return instance; return instance;
} }

View File

@@ -65,6 +65,7 @@ public class SettingsLoader {
UI("ui"), UI("ui"),
THEME("theme"), THEME("theme"),
LOG_DIR("log-dir"), LOG_DIR("log-dir"),
DEBUG("debug"),
DISABLE_LARGE_DOWNLOADS("disable-large-downloads"); DISABLE_LARGE_DOWNLOADS("disable-large-downloads");
String propertyName; String propertyName;
@@ -92,6 +93,7 @@ public class SettingsLoader {
public static final String ARG_MEMORY = "-memory"; public static final String ARG_MEMORY = "-memory";
public static final String ARG_RENDERTIME = "-rendertime"; public static final String ARG_RENDERTIME = "-rendertime";
public static final String ARG_VERBOSE = "--verbose"; public static final String ARG_VERBOSE = "--verbose";
public static final String ARG_LOG_STDOUT = "--log-stdout";
public static final String ARG_REQUEST_TIME = "-request-time"; public static final String ARG_REQUEST_TIME = "-request-time";
public static final String ARG_SHUTDOWN = "-shutdown"; public static final String ARG_SHUTDOWN = "-shutdown";
public static final String ARG_SHUTDOWN_MODE = "-shutdown-mode"; public static final String ARG_SHUTDOWN_MODE = "-shutdown-mode";
@@ -117,6 +119,7 @@ public class SettingsLoader {
private Option<String> password; private Option<String> password;
private Option<String> logDir; private Option<String> logDir;
private Option<String> debug;
private Option<String> proxy; private Option<String> proxy;
private Option<String> hostname; private Option<String> hostname;
private Option<String> computeMethod; private Option<String> computeMethod;
@@ -146,7 +149,7 @@ public class SettingsLoader {
public void setSettings(String path_, String login_, String password_, String proxy_, String hostname_, public void setSettings(String path_, String login_, String password_, String proxy_, String hostname_,
ComputeType computeMethod_, GPUDevice gpu_, Integer cores_, Long maxRam_, ComputeType computeMethod_, GPUDevice gpu_, Integer cores_, Long maxRam_,
Integer maxRenderTime_, String cacheDir_, String sharedZip_, Boolean autoSignIn_, Boolean useSysTray_, Integer maxRenderTime_, String cacheDir_, String sharedZip_, Boolean autoSignIn_, Boolean useSysTray_,
Boolean isHeadless, String ui_, String theme_, Integer priority_, Boolean disableLargeDownloads_) { Boolean isHeadless, String ui_, String theme_, Integer priority_, Boolean disableLargeDownloads_, Boolean debug_) {
if (path_ == null) { if (path_ == null) {
path = OS.getOS().getDefaultConfigFilePath(); path = OS.getOS().getDefaultConfigFilePath();
} }
@@ -166,6 +169,7 @@ public class SettingsLoader {
priority = setValue(priority_, priority, ARG_PRIORITY); priority = setValue(priority_, priority, ARG_PRIORITY);
theme = setValue(theme_, theme, ARG_THEME); theme = setValue(theme_, theme, ARG_THEME);
disableLargeDownloads = setValue(disableLargeDownloads_.toString(), disableLargeDownloads, ARG_DISABLE_LARGE_DOWNLOADS); disableLargeDownloads = setValue(disableLargeDownloads_.toString(), disableLargeDownloads, ARG_DISABLE_LARGE_DOWNLOADS);
debug = setValue(debug_.toString(), debug, ARG_VERBOSE);
if (cores_ > 0) { if (cores_ > 0) {
cores = setValue(cores_.toString(), cores, ARG_CORES); cores = setValue(cores_.toString(), cores, ARG_CORES);
@@ -287,6 +291,7 @@ public class SettingsLoader {
setProperty(prop, configFileProp, PropertyNames.THEME, theme); setProperty(prop, configFileProp, PropertyNames.THEME, theme);
setProperty(prop, configFileProp, PropertyNames.DISABLE_LARGE_DOWNLOADS, disableLargeDownloads); setProperty(prop, configFileProp, PropertyNames.DISABLE_LARGE_DOWNLOADS, disableLargeDownloads);
setProperty(prop, configFileProp, PropertyNames.LOG_DIR, logDir); setProperty(prop, configFileProp, PropertyNames.LOG_DIR, logDir);
setProperty(prop, configFileProp, PropertyNames.DEBUG, debug);
prop.store(output, null); prop.store(output, null);
} }
catch (IOException io) { catch (IOException io) {
@@ -393,6 +398,8 @@ public class SettingsLoader {
logDir = loadConfigOption(prop, PropertyNames.LOG_DIR, logDir, ARG_LOG_DIRECTORY); logDir = loadConfigOption(prop, PropertyNames.LOG_DIR, logDir, ARG_LOG_DIRECTORY);
debug = loadConfigOption(prop, PropertyNames.DEBUG, debug, ARG_VERBOSE);
if (prop.containsKey(PropertyNames.PRIORITY.propertyName)) { if (prop.containsKey(PropertyNames.PRIORITY.propertyName)) {
int prio = Integer.parseInt(prop.getProperty(PropertyNames.PRIORITY.propertyName)); int prio = Integer.parseInt(prop.getProperty(PropertyNames.PRIORITY.propertyName));
if (priority == null) { if (priority == null) {
@@ -542,6 +549,10 @@ public class SettingsLoader {
if (config.getLogDirectory() != null && logDir != null) { if (config.getLogDirectory() != null && logDir != null) {
config.setLogDirectory(logDir.getValue()); config.setLogDirectory(logDir.getValue());
} }
if (config.isDebugLevel() == false && debug != null) {
config.setDebugLevel(Boolean.parseBoolean(debug.getValue()));
}
} }
private void initWithDefaults() { private void initWithDefaults() {
@@ -565,11 +576,12 @@ public class SettingsLoader {
this.cores = new Option<>(String.valueOf(defaultConfigValues.getNbCores()), ARG_CORES); this.cores = new Option<>(String.valueOf(defaultConfigValues.getNbCores()), ARG_CORES);
this.disableLargeDownloads = new Option<>(String.valueOf(defaultConfigValues.isDisableLargeDownloads()), ARG_DISABLE_LARGE_DOWNLOADS); this.disableLargeDownloads = new Option<>(String.valueOf(defaultConfigValues.isDisableLargeDownloads()), ARG_DISABLE_LARGE_DOWNLOADS);
this.logDir = null; this.logDir = null;
this.debug = null;
} }
@Override public String toString() { @Override public String toString() {
return String.format( return String.format(
"SettingsLoader [path=%s, login=%s, password=%s, computeMethod=%s, gpu=%s, cacheDir=%s, sharedZip=%s, theme=%s, priority=%d, autosign=%s, usetray=%s, headless=%s, disableLargeDownloads=%s, logDir=%s]", "SettingsLoader [path=%s, login=%s, password=%s, computeMethod=%s, gpu=%s, cacheDir=%s, sharedZip=%s, theme=%s, priority=%d, autosign=%s, usetray=%s, headless=%s, disableLargeDownloads=%s, logDir=%s, debug=%s]",
path, login, password, computeMethod, gpu, cacheDir, sharedZip, theme, priority, autoSignIn, useSysTray, headless, disableLargeDownloads, logDir); path, login, password, computeMethod, gpu, cacheDir, sharedZip, theme, priority, autoSignIn, useSysTray, headless, disableLargeDownloads, logDir, debug);
} }
} }

View File

@@ -78,7 +78,9 @@ public class Worker {
@Option(name = SettingsLoader.ARG_RENDERTIME, usage = "Maximum time allow for each frame (in minutes)", required = false) private int max_rendertime = -1; @Option(name = SettingsLoader.ARG_RENDERTIME, usage = "Maximum time allow for each frame (in minutes)", required = false) private int max_rendertime = -1;
@Option(name = SettingsLoader.ARG_VERBOSE, usage = "Display full log", required = false) private boolean print_log = false; @Option(name = SettingsLoader.ARG_LOG_STDOUT, usage = "Display full log", required = false) private boolean print_log = false;
@Option(name = SettingsLoader.ARG_VERBOSE, usage = "Log DEBUG", required = false) private boolean log_debug = false;
@Option(name = SettingsLoader.ARG_REQUEST_TIME, usage = "H1:M1-H2:M2,H3:M3-H4:M4 Use the 24h format. For example to request job between 2am-8.30am and 5pm-11pm you should do -request-time 2:00-8:30,17:00-23:00 Caution, it's the requesting job time to get a project, not the working time", metaVar = "2:00-8:30,17:00-23:00", required = false) private String request_time = null; @Option(name = SettingsLoader.ARG_REQUEST_TIME, usage = "H1:M1-H2:M2,H3:M3-H4:M4 Use the 24h format. For example to request job between 2am-8.30am and 5pm-11pm you should do -request-time 2:00-8:30,17:00-23:00 Caution, it's the requesting job time to get a project, not the working time", metaVar = "2:00-8:30,17:00-23:00", required = false) private String request_time = null;
@@ -138,6 +140,7 @@ public class Worker {
ComputeType compute_method = null; ComputeType compute_method = null;
Configuration config = new Configuration(null, login, password); Configuration config = new Configuration(null, login, password);
config.setDebugLevel(log_debug);
config.setPrintLog(print_log); config.setPrintLog(print_log);
config.setPriority(priority); config.setPriority(priority);
config.setDetectGPUs(!no_gpu_detection); config.setDetectGPUs(!no_gpu_detection);

View File

@@ -800,7 +800,7 @@ public class Settings implements Activity {
.setSettings(config.getConfigFilePath(), login.getText(), new String(password.getPassword()), proxyText, hostnameText, method, .setSettings(config.getConfigFilePath(), login.getText(), new String(password.getPassword()), proxyText, hostnameText, method,
selected_gpu, cpu_cores, max_ram, max_rendertime, getCachePath(config), getSharedPath(config), autoSignIn.isSelected(), selected_gpu, cpu_cores, max_ram, max_rendertime, getCachePath(config), getSharedPath(config), autoSignIn.isSelected(),
useSysTray.isSelected(), headlessCheckbox.isSelected(), GuiSwing.type, themeOptionsGroup.getSelection().getActionCommand(), useSysTray.isSelected(), headlessCheckbox.isSelected(), GuiSwing.type, themeOptionsGroup.getSelection().getActionCommand(),
config.getPriority(), disableLargeDownloads.isSelected()); config.getPriority(), disableLargeDownloads.isSelected(), config.isDebugLevel());
// wait for successful authentication (to store the public key) // wait for successful authentication (to store the public key)
// or do we already have one? // or do we already have one?