Hello, I have a Java web app that creates a SocketAppender like this: myLogger = LogManager.getLogger(sName); myLogger.setAdditivity(false); // prevents double output to console SocketAppender sa = new SocketAppender(sRemoteHost, iRemotePort); myLogger.addAppender(sa); myLogger.setLevel(Level.INFO);
I send messages from an HTTP Request using MDC as well like this: // now iterate over all the request parameters try { Enumeration enum = request.getParameterNames(); while ( enum.hasMoreElements() ) { String paramName = (String) enum.nextElement(); String paramValue = (String) request.getParameter(paramName); if ( (paramName!=null) && (paramValue!=null) ) { MDC.put(paramName, paramValue); } } } catch (Exception e) { e.printStackTrace(); } myLogger.info("test MDC"); and on the remote machine, I'm using JDBCAppender classes. I wrote a JDBCSqlHandler class that gets those MDC values by key name, but then I want to dump to whole MDC context (the entire Hashtable) but the MDC always returns null. // Remote side parses HTTP Request params from MDC's hashtable into XML private String toXML() { StringBuffer sb = new StringBuffer("<HTTP_REQ_PARAMS>"); Hashtable hash = MDC.getContext(); if (hash != null) { System.out.println("\n\tHashtable size=" + hash.size()); Iterator iter = hash.keySet().iterator(); while (iter.hasNext()) { String sKey = (String)iter.next(); String sVal = (String)hash.get(sKey); System.out.println (" Key=" + sKey + " Value=" + sVal); if ( (sKey!=null) && (sVal!=null) ) { sb.append("<").append(sKey).append(">") .append("<![CDATA[").append(sVal).append("]]>") .append("</").append(quotedString(sKey)).append(">"); } } } else { System.out.println("\n\tHashtable is NULL!!"); } sb.append("</HTTP_REQ_PARAMS>"); return sb.toString(); } The above always says the MDC.getContext() is null. Yet I can make calls on the remote side like this that work: String sEnv = "'" + ( (event.getMDC("env")==null) ? "" : (String)event.getMDC("env") ) + "'"; String sObj = "'" + ( (event.getMDC("obj")==null) ? "" : (String)event.getMDC("obj") ) + "'"; String sCmd = "'" + ( (event.getMDC("cmd")==null) ? "" : (String)event.getMDC("cmd") ) + "'"; I get actual values for sEnv, sObj, sCmd ... but the MDC.getContext() returns null. Any ideas? Thanks! _______________________________________ Rob Mitchell Base Class Technologies, Inc. Java, WebSphere, Domino, Oracle, Web development [EMAIL PROTECTED]