String value = entry.getValue().toString(); if (key.equals(AppenderConstants.PARAM_CORRELATOR_LABEL)) { tevent.setCorrelator(value); } else if (key.equals(AppenderConstants.PARAM_TAG_LABEL)) { tevent.setTag(value); } else if (key.equals(AppenderConstants.PARAM_LOCATION_LABEL)) { tevent.setLocation(value); } else if (key.equals(AppenderConstants.PARAM_RESOURCE_LABEL)) { tevent.getOperation().setResource(value); } else if (key.equals(AppenderConstants.PARAM_USER_LABEL)) { tevent.getOperation().setUser(value); } else if (key.equals(AppenderConstants.PARAM_OP_TYPE_LABEL)) { tevent.getOperation().setType(OpType.valueOf(value)); } else if (key.equals(AppenderConstants.PARAM_OP_NAME_LABEL)) { tevent.getOperation().setName(value); } else if (key.equals(AppenderConstants.PARAM_EXCEPTION_LABEL)) { tevent.getOperation().setException(value);
/** * Create a new log event instance * * @param sink * sink associated with the event * @param msg * tracking event instance */ public SinkLogEvent(EventSink sink, TrackingEvent msg) { super(sink); logObj = msg; error = msg.getOperation().getThrowable(); level = msg.getSeverity(); evSrc = msg.getSource(); argList = msg.getMessageArgs(); ttl = msg.getTTL(); }
@Override public boolean filter(EventSink sink, TrackingEvent event) { if (elapsedUsec >= 0 && event.getOperation().getElapsedTimeUsec() < elapsedUsec) { return false; } if (waitUsec >= 0 && event.getOperation().getWaitTimeUsec() < waitUsec) { return false; } if (msgPattern != null && !msgPattern.matcher(event.getMessagePattern()).matches()) { return false; } if (isDuplicate(event, event.getMessage())) { return false; } if (ttl != TTL.TTL_CONTEXT) { event.setTTL(ttl); } return passLevel(event.getSeverity(), sink); }
source = (curEvent != null ? curEvent.getSource() : null); if (source == null) { source = (curActivity != null ? curActivity.getSource() : null); curEvent.setLocation(curActivity.getLocation()); curEvent.getOperation().setPID(curActivity.getPID()); curEvent.getOperation().setTID(curActivity.getTID()); curEvent.getOperation().setResource(curActivity.getResource()); curEvent.getOperation().setUser(curActivity.getUser()); curEvent.setTTL(TNT4JSimulator.getTTL()); curEvent.getOperation().setSeverity(severity == null ? OpLevel.INFO : severity); curEvent.getOperation().setCompCode(cc == null ? OpCompCode.SUCCESS : cc); if (srcId > 0) { curEvent.setSource(source); curEvent.getOperation().setUser(user); } else if (curActivity == null) { curEvent.getOperation().setUser(source.getUser()); curEvent.getOperation().setPID(pid); curEvent.getOperation().setTID(tid); curEvent.getOperation().setName(name); curEvent.setLocation(loc); curEvent.getOperation().setResource(res);
event.getOperation().setSeverity(level); event.setTag(jev.getThreadName()); event.getOperation().setResource(frame.getClassName()); event.setLocation(frame.getFileName() + ":" + frame.getLineNumber()); event.setSource(logger.getConfiguration().getSourceFactory().newSource(jev.getLoggerName())); String value = entry.getValue(); if (key.equalsIgnoreCase(PARAM_CORRELATOR_LABEL)) { event.setCorrelator(value); } else if (key.equalsIgnoreCase(PARAM_TAG_LABEL)) { event.setTag(value); } else if (key.equalsIgnoreCase(PARAM_LOCATION_LABEL)) { event.setLocation(value); } else if (key.equalsIgnoreCase(PARAM_RESOURCE_LABEL)) { event.getOperation().setResource(value); } else if (key.equalsIgnoreCase(PARAM_USER_LABEL)) { event.getOperation().setUser(value); } else if (key.equalsIgnoreCase(PARAM_ELAPSED_TIME_LABEL)) { elapsedTimeUsec = Long.parseLong(value); } else if (key.equalsIgnoreCase(PARAM_AGE_TIME_LABEL)) { event.setMessageAge(Long.parseLong(value)); } else if (key.equalsIgnoreCase(PARAM_START_TIME_LABEL)) { startTime = Long.parseLong(value); ccode = OpCompCode.valueOf(value); } else if (key.equalsIgnoreCase(PARAM_SEVERITY_LABEL)) { event.getOperation().setSeverity(OpLevel.valueOf(value)); } else if (key.equalsIgnoreCase(PARAM_OP_TYPE_LABEL)) { event.getOperation().setType(OpType.valueOf(value));
if (!Utils.isEmpty(event.getGUID())) { jsonString.append(JSON_GUID_LABEL).append(ATTR_SEP); Utils.quote(event.getGUID(), jsonString).append(ATTR_JSON); if (!Utils.isEmpty(event.getTrackingId())) { jsonString.append(JSON_TRACK_ID_LABEL).append(ATTR_SEP); Utils.quote(event.getTrackingId(), jsonString).append(ATTR_JSON); if (!Utils.isEmpty(event.getSignature())) { jsonString.append(JSON_TRACK_SIGN_LABEL).append(ATTR_SEP); Utils.quote(event.getSignature(), jsonString).append(ATTR_JSON); if (!Utils.isEmpty(event.getParentId())) { jsonString.append(JSON_PARENT_TRACK_ID_LABEL).append(ATTR_SEP); Utils.quote(event.getParentId(), jsonString).append(ATTR_JSON); Utils.quote(StringEscapeUtils.escapeJson(event.getSource().getName()), jsonString).append(ATTR_JSON); String ssn = getSSN(event.getSource()); if (!Utils.isEmpty(ssn)) { Utils.quote(StringEscapeUtils.escapeJson(event.getSource().getFQName()), jsonString).append(ATTR_JSON); if (!Utils.isEmpty(event.getSource().getUrl())) { String escaped = StringEscapeUtils.escapeJson(event.getSource().getUrl()); // escape double quote chars jsonString.append(JSON_SOURCE_URL_LABEL).append(ATTR_SEP); Utils.quote(escaped, jsonString).append(ATTR_JSON); if (event.get2(TrackingEvent.OBJ_ONE) != null) { Utils.quote(event.get2Type(), jsonString).append(ATTR_JSON);
operation.setCorrelator(correlators); operation.setException(Utils.getThrowable(args)); setSource(src); setLocation(src); setTag(tags);
/** * Process syslog message based on RFC5424 * * @param facility * syslog facility name * @param event * syslog message * @param tevent * tracking event * * @return tracking event */ protected TrackingEvent processRFC3164(String facility, SyslogServerEventIF event, TrackingEvent tevent) { Map<String, Object> map = parseAttributes(event); String appName = map.get("appl.name").toString(); String serverName = map.get("server.name").toString(); Long pid = (Long) map.get("appl.pid"); tevent.setTag(facility, serverName, appName); tevent.getOperation().setPID(pid); tevent.getOperation().setTID(pid); tevent.getOperation().setResource(appName); tevent.getOperation().setName(facility); // set the appropriate source SourceFactory factory = logger.getConfiguration().getSourceFactory(); Source rootSource = factory.getRootSource().getSource(SourceType.DATACENTER); tevent.setSource(factory.newSource(appName, SourceType.APPL, factory.newSource(serverName, SourceType.SERVER, rootSource))); return tevent; }
@Override public void event(Object arg0, SyslogServerIF config, SocketAddress arg2, SyslogServerEventIF event) { Date date = (event.getDate() == null ? new Date() : event.getDate()); String facility = getFacilityString(event.getFacility()); OpLevel level = getOpLevel(event.getLevel()); TrackingEvent tevent = logger.newEvent(facility, event.getMessage()); tevent.getOperation().setSeverity(level); tevent.getOperation().addProperty(new Property("facility", facility)); tevent.getOperation().addProperty(new Property("hostname", event.getHost())); tevent.getOperation().addProperty(new Property("level", event.getLevel(), ValueTypes.VALUE_TYPE_ID)); if (arg2 instanceof InetSocketAddress) { InetSocketAddress from = (InetSocketAddress) arg2; tevent.getOperation().addProperty(new Property("hostaddr", from.getAddress().getHostAddress())); tevent.setLocation(from.getAddress().getHostAddress()); } else { tevent.setLocation(event.getHost()); } tevent.setCharset(config.getConfig().getCharSet()); if (event instanceof StructuredSyslogServerEvent) { processRFC5424(facility, (StructuredSyslogServerEvent) event, tevent); } else { processRFC3164(facility, event, tevent); } // extract name=value pairs if available extractVariables(event, tevent); String locationKey = tevent.getLocation() + "/" + tevent.getOperation().getResource(); tevent.stop(date.getTime() * 1000, getUsecSinceLastEvent(locationKey)); logger.tnt(tevent); }
@Override public String format(TrackingEvent event) { StringBuilder msg = new StringBuilder(1024); msg.append(event.getMessage()).append(" "); msg.append("{name: '").append(event.getOperation().getResolvedName()).append("'"); if (event.getOperation().getPropertyCount() > 0) { msg.append(separator); msg.append("prop-count: '").append(event.getOperation().getPropertyCount()).append("'"); if (event.getOperation().getSnapshotCount() > 0) { msg.append(separator); msg.append("snap-count: '").append(event.getOperation().getSnapshotCount()).append("'"); if (event.getOperation().getResource() != null) { msg.append(separator); msg.append("resource: '").append(event.getOperation().getResource()).append("'"); if (event.getOperation().getReasonCode() != 0) { msg.append(separator); msg.append("rcode: '").append(event.getOperation().getReasonCode()).append("'"); if (event.getOperation().getElapsedTimeUsec() != 0) { msg.append(separator); msg.append("usec: '").append(event.getOperation().getElapsedTimeUsec()).append("'"); if (event.getMessageAge() != 0) { msg.append(separator); msg.append("age.usec: '").append(event.getMessageAge()).append("'"); if (event.getOperation().getWaitTimeUsec() != 0) {
@Override public TrackingEvent newEvent(OpLevel severity, String opName, String correlator, String msg, Object... args) { long start = System.nanoTime(); try { if (!isTrackingEnabled(severity, opName, correlator, msg, args)) { return NULL_EVENT; } TrackingEvent event = new TrackingEvent(this, getSource(), severity, opName, correlator, msg, args); event.getOperation().setUser(tConfig.getSource().getUser()); return event; } finally { countOverheadNanos(System.nanoTime() - start); } }
@Override protected void _log(TrackingEvent event) { writeLine(event.getSeverity(), getEventFormatter().format(event), event.getOperation().getThrowable()); }
activity = logger.newActivity(tev.getSeverity(), event.getThreadName()); activity.start(tev.getOperation().getStartTime().getTimeUsec()); activity.setResource(frame.getClassName()); activity.setSource(tev.getSource()); // use event's source name for this activity activity.setException(ex); activity.setStatus(ex != null ? ActivityStatus.EXCEPTION : ActivityStatus.END); activity.tnt(tev); activity.stop(tev.getOperation().getEndTime().getTimeUsec(), 0); logger.tnt(activity); lastSnapshot = lastReport;
@Override public void log(TrackingEvent event) { _checkState(); boolean doLog = filterCheck ? isLoggable(event) : true; if (doLog) { try { if (!_limiter(1, event.getSize())) { return; } if (ttl != TTL.TTL_CONTEXT) { event.setTTL(ttl); } _log(event.sign()); loggedEvents.incrementAndGet(); loggedSnaps.addAndGet(event.getOperation().getSnapshotCount()); lastTime.set(System.currentTimeMillis()); errorState = false; if (!logListeners.isEmpty()) { notifyListeners(new SinkLogEvent(this, event)); } } catch (Throwable ex) { notifyListeners(new SinkLogEvent(this, event), ex); } } }
Utils.quote(StringEscapeUtils.escapeJson(event.getSource().getName()), jsonString).append(ATTR_JSON); String ssn = getSSN(event.getSource()); if (!Utils.isEmpty(ssn)) { Utils.quote(event.getOperation().getType(), jsonString).append(ATTR_JSON); Utils.quote(StringEscapeUtils.escapeJson(event.getSource().getFQName()), jsonString).append(ATTR_JSON); if (!Utils.isEmpty(event.getOperation().getResolvedName())) { String escaped = StringEscapeUtils.escapeJson(event.getOperation().getResolvedName()); // escape double Snapshot selfSnapshot = getSelfSnapshot(event.getOperation()); if (event.getTag() != null) { Set<String> tags = event.getTag(); if (!tags.isEmpty()) { selfSnapshot.add(JSON_MSG_TAG_FIELD, tags); event.getOperation().addSnapshot(selfSnapshot); int snapCount = event.getOperation().getSnapshotCount(); int propCount = event.getOperation().getPropertyCount(); .append(itemsToJSON(getProperties(event.getOperation()))).append(ARRAY_END); .append(itemsToJSON(getSnapshots(event.getOperation()))).append(ARRAY_END);
/** * Extract and assign process id * * @param sevent * syslog structured message * @param tevent * tracking event */ protected void assignPid(StructuredSyslogServerEvent sevent, TrackingEvent tevent) { tevent.getOperation().setPID(0); String pid = sevent.getProcessId(); if (pid != null && !pid.isEmpty()) { try { tevent.getOperation().setPID(Long.parseLong(sevent.getProcessId())); } catch (NumberFormatException e) { } } tevent.getOperation().setTID(tevent.getOperation().getPID()); }
/** * Track and Trace a given event and associate it with this activity * * @param severity * severity level of the reported message * @param type * operation type * @param opName * operation name associated with the event message * @param cid * event correlator * @param tag * message tag * @param elapsed * elapsed time of the event in microseconds. * @param msg * event binary message * @param args * argument list, exception passed along side given message * @see OpLevel */ public void tnt(OpLevel severity, OpType type, String opName, String cid, String tag, long elapsed, byte[] msg, Object... args) { TrackingEvent event = tracker.newEvent(severity, type, opName, cid, tag, msg, args); Throwable ex = Utils.getThrowable(args); long elapsedUsec = elapsed > 0 ? elapsed : getLastElapsedUsec(); event.stop(ex != null ? OpCompCode.WARNING : OpCompCode.SUCCESS, 0, ex, Useconds.CURRENT.get(), elapsedUsec); tnt(event); }
/** * {@inheritDoc} */ @Override public void endElement(String uri, String localName, String name) throws SAXException { if (name.equals(SIM_XML_MSG)) { recordMsgData(); curMsg = null; } else if (name.equals(SIM_XML_SNAPSHOT)) { if (curEvent != null) { curEvent.getOperation().addSnapshot(curSnapshot); } else { curActivity.add(curSnapshot); } curSnapshot = null; } else if (name.equals(SIM_XML_ACTIVITY)) { stopActivity(); } else if (name.equals(SIM_XML_EVENT)) { if (curActivity != null) { curActivity.tnt(curEvent); } else { Tracker tracker = trackers.get(curEvent.getSource().getFQName()); if (tracker != null) { tracker.tnt(curEvent); } } curEvent = null; } curElement = activeElements.pop(); }