Changeset 8123
- Timestamp:
- Mar 9, 2023, 10:39:30 AM (7 months ago)
- Location:
- branches/3.19-stable
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.19-stable/src/clients/web/net/sf/basedb/clients/web/extensions/service/ServiceLog.java
r8121 r8123 35 35 import org.slf4j.Logger; 36 36 37 import net.sf.basedb.core.DateUtil; 38 import net.sf.basedb.util.error.ThrowableUtil; 39 37 40 /** 38 41 Instances hold the log entries for a single extension. … … 87 90 88 91 private boolean isDebugEnabled; 92 private boolean copyToStdout; 89 93 90 94 private ServiceLog(String extensionId) … … 118 122 { 119 123 this.isDebugEnabled = debugEnabled; 124 } 125 126 /** 127 Are log entries copied to standard output? 128 */ 129 public boolean isCopyingToStdout() 130 { 131 return copyToStdout; 132 } 133 134 /** 135 Enable or disable copies of log entries to standard output. 136 When enabled, TRACE-level log entries are also written if 137 debugging is enabled. 138 */ 139 public void setCopyToStdout(boolean copyToStdout) 140 { 141 this.copyToStdout = copyToStdout; 120 142 } 121 143 … … 184 206 Add a log entry. 185 207 DEBUG level messages are skipped unless debug-level is enabled. 208 TRACE level messages are always skipped but can be written to 209 standard output if that option and debugging is enabled. 186 210 */ 187 211 void add(LogEntry entry) 188 212 { 213 if (copyToStdout && (entry.level != LogLevel.TRACE || isDebugEnabled)) 214 { 215 System.out.println("["+extensionId+"] "+entry); 216 } 217 if (entry.level == LogLevel.TRACE || (entry.level == LogLevel.DEBUG && !isDebugEnabled)) 218 { 219 return; 220 } 189 221 // A read lock should be enough since we are using a ConcurrentLinkedDeque that supports multiple threads 190 222 Lock l = lock.readLock(); … … 192 224 { 193 225 l.lock(); 194 if (entry.level == LogLevel.DEBUG && !isDebugEnabled) return; //195 226 logEntries.addFirst(entry); 196 227 if (entry.level == LogLevel.WARNING) numWarnings++; 197 228 if (entry.level == LogLevel.ERROR) numErrors++; 198 229 199 230 if (numEntries++ > maxEntries) 200 231 { … … 258 289 logger.debug(msg, t); 259 290 } 291 }, 292 TRACE("trace.png") 293 { 294 @Override 295 void logTo(Logger logger, String msg, Throwable t) 296 { 297 logger.trace(msg, t); 298 } 260 299 }; 261 300 … … 335 374 return t; 336 375 } 376 377 @Override 378 public String toString() 379 { 380 String s = "["+level.name()+"] ["+DateUtil.formatTimestamp(getDate())+"] "+message; 381 if (t != null) 382 { 383 s+="\n"+ThrowableUtil.stackTraceToString(t); 384 } 385 return s; 386 } 337 387 338 388 } -
branches/3.19-stable/src/clients/web/net/sf/basedb/clients/web/extensions/service/ServiceLogger.java
r8121 r8123 47 47 48 48 /** 49 Check if debug logging has been enabled or not. 49 Check if DEBUG logging has been enabled or not. Debug logging 50 can be enabled either by the {@link ServiceLog#setDebugEnabled(boolean)} 51 method or by a wrapped {@link Logger}. 50 52 */ 51 53 public boolean isDebugEnabled() 52 54 { 53 return log.isDebugEnabled(); 55 return log.isDebugEnabled() || otherLogger != null && otherLogger.isDebugEnabled(); 56 } 57 58 /** 59 Check if TRACE logging has been enabled or not. Trace logging is enabled 60 only if both DEBUG logging and {@link ServiceLog#isCopyingToStdout()} 61 are enabled or if a wrapped {@link Logger} has it enabled. 62 */ 63 public boolean isTraceEnabled() 64 { 65 return (log.isCopyingToStdout() && isDebugEnabled()) || 66 (otherLogger != null && otherLogger.isTraceEnabled()); 54 67 } 55 68 … … 133 146 134 147 /** 135 Check if TRACE-level logging has been enabled in the136 related SLF4J logger. If no SLF4J logger is related137 (see {@link #wrap(org.slf4j.Logger)}) all TRACE messages138 will be ignored.139 */140 public boolean isTraceEnabled()141 {142 return otherLogger != null && otherLogger.isTraceEnabled();143 }144 /**145 148 Log a TRACE message with the related SLF4J logger. 146 149 If no SLF4J logger is related … … 150 153 public void trace(String msg) 151 154 { 152 if (otherLogger != null) otherLogger.trace(msg);155 log(LogLevel.TRACE, msg); 153 156 } 154 157 /** … … 160 163 public void trace(String msg, Throwable t) 161 164 { 162 if (otherLogger != null) otherLogger.trace(msg, t);165 log(LogLevel.TRACE, msg, t); 163 166 } 164 167 -
branches/3.19-stable/www/admin/services/index.jsp
r8120 r8123 74 74 redirect = "services.jsp?ID=" + ID; 75 75 } 76 else if ("Set Debug".equals(cmd))76 else if ("SetOptions".equals(cmd)) 77 77 { 78 78 String extensionId = request.getParameter("extensionId"); 79 boolean enable = Values.getBoolean(request.getParameter("enable")); 79 boolean enableDebug = Values.getBoolean(request.getParameter("enableDebug")); 80 boolean copyToStdout = Values.getBoolean(request.getParameter("copyToStdout")); 81 boolean autoUpdate = Values.getBoolean(request.getParameter("autoUpdate")); 80 82 ServiceLog serviceLog = ServiceLog.getLog(extensionId, true); 81 if (enable != serviceLog.isDebugEnabled()) 83 ServiceLogger logger = serviceLog.createLogger(); 84 if (copyToStdout != serviceLog.isCopyingToStdout()) 82 85 { 83 ServiceLogger logger = serviceLog.createLogger(); 84 if (!enable) logger.log(LogLevel.DEBUG, "Debug logging was disabled"); 85 serviceLog.setDebugEnabled(enable); 86 if (enable) logger.log(LogLevel.DEBUG, "Debug logging was enabled"); 86 if (!copyToStdout) logger.info("Stop copy to stdout"); 87 serviceLog.setCopyToStdout(copyToStdout); 88 if (copyToStdout) logger.info("Start copy to stdout"); 87 89 } 88 redirect = "view_log.jsp?ID="+ID+"&extensionId="+HTML.urlEncode(extensionId); 90 serviceLog.setCopyToStdout(copyToStdout); 91 if (enableDebug != serviceLog.isDebugEnabled()) 92 { 93 if (!enableDebug) logger.debug("Debug logging was disabled"); 94 serviceLog.setDebugEnabled(enableDebug); 95 if (enableDebug) logger.debug("Debug logging was enabled"); 96 } 97 redirect = "view_log.jsp?ID="+ID+"&extensionId="+HTML.urlEncode(extensionId)+"&autoUpdate="+autoUpdate; 89 98 } 90 99 else if ("ClearLog".equals(cmd)) -
branches/3.19-stable/www/admin/services/services.js
r8122 r8123 37 37 38 38 Buttons.addClickHandler('btnClearLog', services.clearLog); 39 Events.addEventHandler('enableDebug', 'change', services.toggleDebugLog); 39 Events.addEventHandler('enableDebug', 'change', services.setOptions); 40 Events.addEventHandler('copyToStdout', 'change', services.setOptions); 40 41 41 42 // Auto-update timer … … 106 107 } 107 108 108 services. toggleDebugLog= function()109 services.setOptions = function() 109 110 { 110 111 var extensionId = Data.get('page-data', 'extension-id'); 111 112 var url = 'index.jsp?ID='+App.getSessionId(); 112 url += '&cmd=Set Debug';113 url += '&cmd=SetOptions'; 113 114 url += '&extensionId='+extensionId; 114 url += '&enable='+(Doc.element('enableDebug').checked?1:0); 115 url += '&enableDebug='+(Doc.element('enableDebug').checked?1:0); 116 url += '©ToStdout='+(Doc.element('copyToStdout').checked?1:0); 117 url += '&autoUpdate='+(Doc.element('autoUpdate').checked?1:0);; 115 118 location.replace(url); 116 119 } -
branches/3.19-stable/www/admin/services/view_log.jsp
r8122 r8123 93 93 /> 94 94 <tbl:label style="padding-right: 1em;"> 95 <label><input type="checkbox" name="enableDebug"96 id="enableDebug" <%=serviceLog.isDebugEnabled()?"checked":""%>97 >Enable debug logging</label>95 <label><input type="checkbox" name="enableDebug" 96 id="enableDebug" <%=serviceLog.isDebugEnabled()?"checked":""%> 97 >Enable debug logging</label> 98 98 </tbl:label> 99 99 <tbl:label style="padding-right: 1em;"> 100 <label><input type="checkbox" name="autoUpdate" 101 id="autoUpdate" <%=autoUpdate?"checked":"" %> 102 >Auto update</label> 100 <label title="All log entries are copied to the regular log file (including TRACE-level entries)" 101 ><input type="checkbox" name="copyToStdout" 102 id="copyToStdout" <%=serviceLog.isCopyingToStdout()?"checked":""%> 103 >Copy to stdout</label> 104 </tbl:label> 105 <tbl:label style="padding-right: 1em;"> 106 <label><input type="checkbox" name="autoUpdate" 107 id="autoUpdate" <%=autoUpdate?"checked":"" %> 108 >Auto update</label> 103 109 </tbl:label> 104 110 </tbl:toolbar> … … 139 145 style="display: none;" 140 146 ><%=ThrowableUtil.stackTraceToString(stacktrace)%></div> 141 142 147 <% 143 148 }
Note: See TracChangeset
for help on using the changeset viewer.