diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHandler.java index 5543883af..adb8de9d9 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHandler.java @@ -23,6 +23,7 @@ public class ConfigLoggingHandler extends FormHandler { private String _fileSize; private String _newLogClass; private String _newLogLevel = "WARN"; + private boolean _logCompress; @Override protected void processForm() { @@ -54,6 +55,11 @@ public class ConfigLoggingHandler extends FormHandler { _fileSize = (size != null ? size.trim() : null); } + /** @since 0.9.57 */ + public void setLogcompress(String foo) { + _logCompress = true; + } + /** @since 0.8.1 */ public void setNewlogclass(String s) { if (s != null && s.length() > 0) @@ -73,6 +79,7 @@ public class ConfigLoggingHandler extends FormHandler { */ private void saveChanges() { boolean shouldSave = false; + LogManager mgr = _context.logManager(); if ((_levels != null && _levels.length() > 0) || _newLogClass != null) { try { @@ -81,33 +88,35 @@ public class ConfigLoggingHandler extends FormHandler { props.load(new ByteArrayInputStream(DataHelper.getUTF8(_levels))); if (_newLogClass != null) props.setProperty(_newLogClass, _newLogLevel); - _context.logManager().setLimits(props); - shouldSave = true; - addFormNotice(_t("Log overrides updated")); + if (!props.equals(mgr.getLimits())) { + shouldSave = true; + mgr.setLimits(props); + addFormNotice(_t("Log overrides updated")); + } } catch (IOException ioe) { // shouldn't ever happen (BAIS shouldnt cause an IOE) - _context.logManager().getLog(ConfigLoggingHandler.class).error("Error reading from the props?", ioe); + mgr.getLog(ConfigLoggingHandler.class).error("Error reading from the props?", ioe); addFormError("Error updating the log limits - levels not valid"); } - } else if (!_context.logManager().getLimits().isEmpty()) { - _context.logManager().setLimits(null); + } else if (!mgr.getLimits().isEmpty()) { + mgr.setLimits(null); shouldSave = true; addFormNotice("Log limits cleared"); } if (_defaultLevel != null) { - String oldDefault = _context.logManager().getDefaultLimit(); + String oldDefault = mgr.getDefaultLimit(); if (_defaultLevel.equals(oldDefault)) { // noop } else { shouldSave = true; - _context.logManager().setDefaultLimit(_defaultLevel); + mgr.setDefaultLimit(_defaultLevel); addFormNotice("Default log level updated from " + oldDefault + " to " + _defaultLevel); } } - if (_dateFormat != null && !_dateFormat.equals(_context.logManager().getDateFormatPattern())) { - boolean valid = _context.logManager().setDateFormat(_dateFormat); + if (_dateFormat != null && !_dateFormat.equals(mgr.getDateFormatPattern())) { + boolean valid = mgr.setDateFormat(_dateFormat); if (valid) { shouldSave = true; addFormNotice("Date format updated"); @@ -118,10 +127,10 @@ public class ConfigLoggingHandler extends FormHandler { if (_fileSize != null) { int newBytes = LogManager.getFileSize(_fileSize); - int oldBytes = _context.logManager().getFileSize(); + int oldBytes = mgr.getFileSize(); if (newBytes > 0) { if (oldBytes != newBytes) { - _context.logManager().setFileSize(newBytes); + mgr.setFileSize(newBytes); shouldSave = true; addFormNotice("File size updated"); } @@ -130,15 +139,22 @@ public class ConfigLoggingHandler extends FormHandler { } } + if (_logCompress != mgr.shouldGzip()) { + mgr.setGzip(_logCompress); + addFormNotice("Compression setting updated"); + shouldSave = true; + } + + /*** disable if ( (_filename != null) && (_filename.trim().length() > 0) ) { _filename = _filename.trim(); - String old = _context.logManager().getBaseLogfilename(); + String old = mgr.getBaseLogfilename(); if ( (old != null) && (_filename.equals(old)) ) { // noop - don't update since its the same } else { shouldSave = true; - _context.logManager().setBaseLogfilename(_filename); + mgr.setBaseLogfilename(_filename); addFormNotice("Log file name pattern updated to " + _filename + " (note: will not take effect until next rotation)"); } @@ -147,21 +163,21 @@ public class ConfigLoggingHandler extends FormHandler { if ( (_recordFormat != null) && (_recordFormat.trim().length() > 0) ) { _recordFormat = _recordFormat.trim(); - String old = new String(_context.logManager().getFormat()); + String old = new String(mgr.getFormat()); if (_recordFormat.equalsIgnoreCase(old)) { // noop - no change } else { char fmt[] = new char[_recordFormat.length()]; for (int i = 0; i < fmt.length; i++) fmt[i] = _recordFormat.charAt(i); - _context.logManager().setFormat(fmt); + mgr.setFormat(fmt); shouldSave = true; addFormNotice("Log record format updated"); } } if (shouldSave) { - boolean saved = _context.logManager().saveConfig(); + boolean saved = mgr.saveConfig(); if (saved) addFormNotice(_t("Log configuration saved")); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHelper.java index d00d3138a..8fe2ede1f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigLoggingHelper.java @@ -9,31 +9,45 @@ import java.util.TreeSet; import net.i2p.data.DataHelper; import net.i2p.router.web.HelperBase; import net.i2p.util.Log; +import net.i2p.util.LogManager; import net.i2p.util.Translate; public class ConfigLoggingHelper extends HelperBase { + private LogManager _mgr; + + /** @since 0.9.57 */ + @Override + public void setContextId(String contextId) { + super.setContextId(contextId); + _mgr = _context.logManager(); + } public String getLogFilePattern() { - return _context.logManager().getBaseLogfilename(); + return _mgr.getBaseLogfilename(); } public String getRecordPattern() { - return new String(_context.logManager().getFormat()); + return new String(_mgr.getFormat()); } public String getDatePattern() { - return _context.logManager().getDateFormatPattern(); + return _mgr.getDateFormatPattern(); } public String getMaxFileSize() { - int bytes = _context.logManager().getFileSize(); + int bytes = _mgr.getFileSize(); if (bytes <= 0) return "1.00 MiB"; return DataHelper.formatSize2(bytes, false) + 'B'; } + /** @since 0.9.57 */ + public String getLogCompress() { + return _mgr.shouldGzip() ? CHECKED : ""; + } + public String getLogLevelTable() { StringBuilder buf = new StringBuilder(32*1024); - Properties limits = _context.logManager().getLimits(); + Properties limits = _mgr.getLimits(); TreeSet sortedLogs = new TreeSet(); for (String prefix : limits.stringPropertyNames()) { sortedLogs.add(prefix); @@ -71,7 +85,7 @@ public class ConfigLoggingHelper extends HelperBase { public String getDefaultLogLevelBox() { StringBuilder buf = new StringBuilder(128); - String cur = _context.logManager().getDefaultLimit(); + String cur = _mgr.getDefaultLimit(); getLogLevelBox(buf, "defaultloglevel", cur, false); return buf.toString(); } @@ -98,8 +112,8 @@ public class ConfigLoggingHelper extends HelperBase { * @since 0.8.1 */ public String getNewClassBox() { - List logs = _context.logManager().getLogs(); - Set limits = _context.logManager().getLimits().stringPropertyNames(); + List logs = _mgr.getLogs(); + Set limits = _mgr.getLimits().stringPropertyNames(); TreeSet sortedLogs = new TreeSet(); for (Log log : logs) { diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index 58b5ed154..dcb1bc8c7 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -36,6 +36,15 @@ <%=intl._t("Max log file size")%>: " > +<% + if (logginghelper.isAdvanced()) { +%> + <%=intl._t("Compress logs?")%>: + > + +<% + } +%> <%=intl._t("Default log level")%>: <%=intl._t("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%> diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java index 9c6d511c6..76493b65b 100644 --- a/core/java/src/net/i2p/util/LogManager.java +++ b/core/java/src/net/i2p/util/LogManager.java @@ -696,12 +696,19 @@ public class LogManager implements Flushable { } /** - * @since 0.9.56 + * @since 0.9.56, public since 0.9.57, was pkg private */ - boolean shouldGzip() { + public boolean shouldGzip() { return _gzip; } + /** + * @since 0.9.57 + */ + public void setGzip(boolean yes) { + _gzip = yes; + } + /** * @since 0.9.56 */