Changeset 16
- Timestamp:
- 08/06/10 23:26:00 (14 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/README.HttpXmlApi.txt
r1 r16 35 35 - error-log: the last 40 (by default) events of general interest 36 36 optional parameters: profile (list only events related to specified profile) 37 38 - file-log: the last 40 (by default) events of log level WARNING or SEVERE from the main file log 37 39 38 40 - user-log: the last 100 transactions results for a specific user (requires debug="true" for the profile) -
trunk/README.txt
r1 r16 82 82 - When running under windows, use the prepared java service wrapper setup (jsw-win32.zip) to install the 83 83 proxy as a proper nt service (kept running regardless of user login/logout and started automatically at boot). 84 Make sure theall the jsw files are in a dir called jsw in the proxy home dir, and set silent="true" for the logging84 Make sure all the jsw files are in a dir called jsw in the proxy home dir, and set silent="true" for the logging 85 85 in proxy.xml or you'll have duplicate logs. Also make sure you can successfully start the proxy from cmdline before 86 86 you try it as a service. -
trunk/changelog.txt
r12 r16 109 109 Added: New status command 'login-failures', shows a list of failed login attempts per user or ip (for most interfaces). 110 110 Added: New status command 'proxy-plugins' for listing all loaded plugins and any associated info they publish. 111 Added: New status command 'file-log', returns recently intercepted file loggings with level WARNING or SEVERE. 111 112 Added: New ctrl command 'gen-keystore', auto creates a java keystore for using the status web with SSL. 112 113 Added: New ctrl command 'disable-connector', temporarily disables a specified connector. … … 114 115 Added: New ctrl command 'set-user-debug', temporarily changes debug for a user (enabling log-ecm, log-emm, log-zap). 115 116 Added: New ctrl command 'remove-failed', removes entries matching specified wildcard mask from login-failures. 117 Added: New ctrl command 'clear-file-log', removes intercepted file log entries from the web-backend. 116 118 Added: Attribute 'time' to <jvm> (proxy-status output). Local system time as a rfc822 date. 117 119 Added: Attribute 'cdata' to <service> (most output containing services). Custom data for service mapping (chid/ident). -
trunk/src/com/bowman/cardserv/cws/CwsConnectorManager.java
r1 r16 190 190 mapper = getServiceMapper(profile.getName()); 191 191 if(mapper == null) mapper = new CwsServiceMapper(profile, this); 192 conf = (ProxyXmlConfig)mapperConfs. get(profile.getName());192 conf = (ProxyXmlConfig)mapperConfs.remove(profile.getName()); 193 193 defaults.setOverrides(conf); 194 194 mapper.configUpdated(defaults); 195 195 serviceMappers.put(profile.getName(), mapper); 196 196 } 197 if(!mapperConfs.isEmpty()) logger.warning("Mapper configs for unknown profile(s) ignored: " + mapperConfs.keySet()); 197 198 } 198 199 -
trunk/src/com/bowman/cardserv/rmi/RemoteEvent.java
r1 r16 19 19 public static final int CWS_LOST_SERVICE = 6, ECM_TRANSACTION = 7; 20 20 public static final int CWS_INVALID_CARD = 8; 21 public static final int PROXY_STARTUP = 10 ;21 public static final int PROXY_STARTUP = 10, LOG_EVENT = 11; 22 22 23 23 private final long timeStamp; -
trunk/src/com/bowman/cardserv/rmi/RemoteHandler.java
r1 r16 12 12 import java.rmi.RemoteException; 13 13 import java.util.*; 14 import java.util.logging.Level; 14 15 15 16 /** … … 20 21 */ 21 22 public class RemoteHandler extends UnicastRemoteObject implements RemoteProxy, UserStatusListener, CwsListener, 22 EcmTransactionListener, Runnable23 EcmTransactionListener, LogListener, Runnable 23 24 { 24 25 private static final long EVENT_START_DELAY = 15 * 1000; … … 41 42 this.logger = ProxyLogger.getLabeledLogger(getClass().getName()); 42 43 this.sm = SessionManager.getInstance(); 44 ProxyLogger.setLogListener(this); 43 45 } 44 46 … … 565 567 fireRemoteEvent(re); 566 568 } 569 570 public void onLog(Level l, String label, String message) { 571 if(l == Level.SEVERE || l == Level.WARNING) { 572 RemoteEvent re = new RemoteEvent(RemoteEvent.LOG_EVENT, label, message, null); 573 re.setProperty("log-level", l.getName()); 574 fireRemoteEvent(re); 575 } 576 } 567 577 568 578 public synchronized void destroy() { -
trunk/src/com/bowman/cardserv/util/CustomFormatter.java
r1 r16 79 79 } 80 80 81 public static String formatLabel(String sourceClass) { 82 if(sourceClass.startsWith(logBase)) return sourceClass.substring(logBase.length() + 1); 83 else return sourceClass; 84 } 85 81 86 public String format(LogRecord lr) { 82 87 -
trunk/src/com/bowman/cardserv/util/ProxyLogger.java
r1 r16 2 2 3 3 import com.bowman.cardserv.ConfigException; 4 import com.bowman.cardserv.interfaces.LogListener; 4 5 5 6 import java.util.logging.*; … … 18 19 public static final String LOG_BASE = "com.bowman.cardserv"; 19 20 private static ConsoleHandler console; 21 private static LogListener listener; 22 23 public static void setLogListener(LogListener logListener) { 24 listener = logListener; 25 } 20 26 21 27 public static ProxyLogger getProxyLogger(String name) { … … 62 68 String sourceClass = caller==null?"<unknown>":caller.getClassName(); 63 69 String sourceMethod = caller==null?"<unknown>":caller.getMethodName(); 70 if(listener != null) try { 71 listener.onLog(l, label, msg); 72 } catch (Throwable e) { 73 e.printStackTrace(); 74 } 64 75 logger.logp(l, sourceClass, sourceMethod, msg, label); 65 76 } -
trunk/src/com/bowman/cardserv/web/WebBackend.java
r1 r16 40 40 List eventLog = Collections.synchronizedList(new ArrayList()); 41 41 List warningLog = Collections.synchronizedList(new ArrayList()); 42 List fileLog = Collections.synchronizedList(new ArrayList()); 42 43 43 44 private Set connecting = new HashSet(), invalid = new HashSet(); … … 554 555 } 555 556 break; 557 case RemoteEvent.LOG_EVENT: 558 fileLog.add(0, event); 559 break; 556 560 557 561 default: … … 561 565 562 566 if(eventLog.size() > MAX_EVENTS) eventLog.remove(eventLog.size() - 1); 567 if(fileLog.size() > MAX_EVENTS) fileLog.remove(fileLog.size() - 1); 563 568 } 564 569 -
trunk/src/com/bowman/cardserv/web/XmlHelper.java
r12 r16 265 265 } 266 266 267 public CtrlCommandResult runCtrlCmdClearFileLog() throws RemoteException { 268 webBackend.fileLog.clear(); 269 return new CtrlCommandResult(true, "File log events cleared."); 270 } 271 267 272 public CtrlCommandResult runCtrlCmdGenKeystore(Map params) throws RemoteException { 268 273 String password = (String)params.get("password"); … … 382 387 public void runStatusCmdErrorLog(XmlStringBuffer xb, Map params, String user) throws RemoteException { 383 388 xmlFormatErrorLog(xb, (String[])params.get("profiles"), proxy.isAdmin(user)); 389 } 390 391 public void runStatusCmdFileLog(XmlStringBuffer xb, Map params, String user) throws RemoteException { 392 if(!proxy.isAdmin(user)) { 393 xb.appendElement("file-log", "size", "-1", true); 394 } else { 395 xmlFormatFileLog(xb); 396 } 384 397 } 385 398 … … 1042 1055 } 1043 1056 xb.closeElement("error-log"); 1057 } 1058 1059 private void xmlFormatFileLog(XmlStringBuffer xb) { 1060 RemoteEvent event; 1061 xb.appendElement("file-log", "size", webBackend.fileLog.size()); 1062 1063 for(Iterator iter = webBackend.fileLog.iterator(); iter.hasNext(); ) { 1064 event = (RemoteEvent)iter.next(); 1065 xb.appendElement("event"); 1066 xb.appendAttr("timestamp", formatTimeStamp(event.getTimeStamp())); 1067 xb.appendAttr("log-level", event.getProperty("log-level")); 1068 xb.appendAttr("label", event.getLabel()); 1069 xb.appendAttr("msg", event.getMessage()); 1070 xb.endElement(true); 1071 } 1072 xb.closeElement("file-log"); 1044 1073 } 1045 1074 -
trunk/src/com/bowman/cardserv/web/ctrl-commands.xml
r1 r16 92 92 <command name="clear-events" label="Clear CWS events" description="Clear all CWS events."/> 93 93 94 <command name="clear-file-log" label="Clear file log events" description="Clear all intercepted file log events (doesn't affect the actual files)."/> 95 94 96 <command name="shutdown" label="Shutdown proxy" description="Stop this proxy node." confirm="true"/> 95 97 -
trunk/src/com/bowman/cardserv/web/status-commands.xml
r1 r16 31 31 32 32 <command name="error-log" label="Show cws events" description="Recent connector errors and events." /> 33 34 <command name="file-log" label="Show file log events" description="Recent SEVERE and WARNING level loggings."/> 33 35 34 36 <command name="user-log" label="Show user transaction log" description="Recent ecm transaction for one user."> -
trunk/web/js/cs-status.js
r1 r16 34 34 events: { 35 35 label: 'Events', 36 queries: ['proxy-status', 'ca-profiles', 'error-log', 'user-warning-log', ' profile'],36 queries: ['proxy-status', 'ca-profiles', 'error-log', 'user-warning-log', 'file-log', 'profile'], 37 37 repeat: true, 38 38 handler: function(xml) { … … 83 83 if(getById('clearWarningsBtn')) getById('clearWarningsBtn').onclick = function() { 84 84 executeCtrlCmd('clear-warnings', new Array()); 85 }; 86 if(getById('clearFileLogBtn')) getById('clearFileLogBtn').onclick = function() { 87 executeCtrlCmd('clear-file-log', new Array()); 85 88 }; 86 89 -
trunk/web/xslt/cws-status-resp.xsl
r12 r16 59 59 </table> 60 60 </fieldset><br /><br /> 61 </xsl:template> 62 63 <xsl:template match="file-log"> 64 <xsl:if test="@size > -1"> 65 <fieldset> 66 <legend><strong>File log events</strong> (recent WARNING and SEVERE level loggings) <input id="clearFileLogBtn" type="button" value="Clear"/> </legend> 67 <table class="error-log"> 68 <tbody> 69 <tr><td> 70 <xsl:for-each select="event"> 71 <xsl:value-of select="@timestamp"/> - 72 <strong> <xsl:value-of select="@log-level"/>: </strong> 73 <strong><xsl:value-of select="@label"/></strong> - <xsl:value-of select="@msg"/><br /> 74 </xsl:for-each> 75 <xsl:if test="@size = 0">No events</xsl:if> 76 </td></tr> 77 </tbody> 78 </table> 79 </fieldset><br /><br /> 80 </xsl:if> 61 81 </xsl:template> 62 82
Note:
See TracChangeset
for help on using the changeset viewer.