Refine search
/** * {@inheritDoc} */ public LoggingEvent rewrite(final LoggingEvent source) { if (!properties.isEmpty()) { Map rewriteProps = new HashMap(source.getProperties()); for(Iterator iter = properties.entrySet().iterator(); iter.hasNext(); ) { Map.Entry entry = (Map.Entry) iter.next(); if (!rewriteProps.containsKey(entry.getKey())) { rewriteProps.put(entry.getKey(), entry.getValue()); } } return new LoggingEvent( source.getFQNOfLoggerClass(), source.getLogger() != null ? source.getLogger(): Logger.getLogger(source.getLoggerName()), source.getTimeStamp(), source.getLevel(), source.getMessage(), source.getThreadName(), source.getThrowableInformation(), source.getNDC(), source.getLocationInformation(), rewriteProps); } return source; }
/** * Convert an event to JSON * * @param writer the destination writer * @param event the event -must not be null * @return the writer * @throws IOException on problems generating the JSON */ public Writer toJson(final Writer writer, final LoggingEvent event) throws IOException { ThrowableInformation ti = event.getThrowableInformation(); toJson(writer, event.getLoggerName(), event.getTimeStamp(), event.getLevel().toString(), event.getThreadName(), event.getRenderedMessage(), ti); return writer; }
/** * Creates a new <code>EventDetails</code> instance. * * @param aEvent a <code>LoggingEvent</code> value */ EventDetails(LoggingEvent aEvent) { this(aEvent.timeStamp, aEvent.getLevel(), aEvent.getLoggerName(), aEvent.getNDC(), aEvent.getThreadName(), aEvent.getRenderedMessage(), aEvent.getThrowableStrRep(), (aEvent.getLocationInformation() == null) ? null : aEvent.getLocationInformation().fullInfo); }
private void writeObject(ObjectOutputStream oos) throws java.io.IOException { // Aside from returning the current thread name the wgetThreadName // method sets the threadName variable. this.getThreadName(); // This sets the renders the message in case it wasn't up to now. this.getRenderedMessage(); // This call has a side effect of setting this.ndc and // setting ndcLookupRequired to false if not already false. this.getNDC(); // This call has a side effect of setting this.mdcCopy and // setting mdcLookupRequired to false if not already false. this.getMDCCopy(); // This sets the throwable sting representation of the event throwable. this.getThrowableStrRep(); oos.defaultWriteObject(); // serialize this event's level writeLevel(oos); }
public String convert(LoggingEvent event) { switch(type) { case RELATIVE_TIME_CONVERTER: return (Long.toString(event.timeStamp - LoggingEvent.getStartTime())); case THREAD_CONVERTER: return event.getThreadName(); case LEVEL_CONVERTER: return event.getLevel().toString(); case NDC_CONVERTER: return event.getNDC(); case MESSAGE_CONVERTER: { return event.getRenderedMessage(); } default: return null; } } }
public void onMessage(javax.jms.Message message) { LoggingEvent event; Logger remoteLogger; try { if(message instanceof ObjectMessage) { ObjectMessage objectMessage = (ObjectMessage) message; event = (LoggingEvent) objectMessage.getObject(); remoteLogger = Logger.getLogger(event.getLoggerName()); remoteLogger.callAppenders(event); } else { logger.warn("Received message is of type "+message.getJMSType() +", was expecting ObjectMessage."); } } catch(JMSException jmse) { logger.error("Exception thrown while processing incoming message.", jmse); } }
remoteLogger = hierarchy.getLogger(event.getLoggerName()); if(event.getLevel().isGreaterOrEqual(remoteLogger.getEffectiveLevel())) { remoteLogger.callAppenders(event); logger.info("Caught java.io.EOFException closing conneciton."); } catch(java.net.SocketException e) { logger.info("Caught java.net.SocketException closing conneciton.");
/** * Create event with summary information. * * @return new event. */ public LoggingEvent createEvent() { String msg = MessageFormat.format( "Discarded {0} messages due to full event buffer including: {1}", new Object[] { new Integer(count), maxEvent.getMessage() }); return new LoggingEvent( "org.apache.log4j.AsyncAppender.DONT_REPORT_LOCATION", Logger.getLogger(maxEvent.getLoggerName()), maxEvent.getLevel(), msg, null); } }
protected LogEvent toLogEvent(LoggingEvent element) { LogEvent answer = new LogEvent(); answer.setClassName(element.getFQNOfLoggerClass()); ThrowableInformation throwableInformation = element.getThrowableInformation(); if (throwableInformation != null) { ThrowableFormatter renderer = new ThrowableFormatter(); String[] stack = renderer.doRender(throwableInformation.getThrowable()); if (stack == null) { stack = element.getThrowableStrRep(); LocationInfo locationInformation = element.getLocationInformation(); if (locationInformation != null) { answer.setFileName(locationInformation.getFileName()); answer.setClassName(locationInformation.getClassName()); answer.setMethodName(locationInformation.getMethodName()); answer.setLineNumber(locationInformation.getLineNumber()); Level level = element.getLevel(); if (level != null) { answer.setLevel(level.toString()); answer.setLogger(element.getLoggerName()); Category logger = element.getLogger(); Object message = element.getMessage(); if (message != null) { answer.setProperties(element.getProperties()); answer.setSeq(element.getTimeStamp());
logger.setLevel(Level.INFO); logger.addAppender(testAppender); logger.removeAppender(testAppender); Assert.assertTrue(testAppender.events.stream().anyMatch(e -> e.getRenderedMessage() .startsWith("MR tracking URL http://localhost:8080/ for job WordCount_job1")));
sbuf.append(event.timeStamp - LoggingEvent.getStartTime()); sbuf.append("</td>" + Layout.LINE_SEP); String escapedThread = Transform.escapeTags(event.getThreadName()); sbuf.append("<td title=\"" + escapedThread + " thread\">"); sbuf.append(escapedThread); if (event.getLevel().equals(Level.DEBUG)) { sbuf.append("<font color=\"#339933\">"); sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); sbuf.append("</font>"); else if(event.getLevel().isGreaterOrEqual(Level.WARN)) { sbuf.append("<font color=\"#993300\"><strong>"); sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); sbuf.append("</strong></font>"); } else { sbuf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); String escapedLogger = Transform.escapeTags(event.getLoggerName()); sbuf.append("<td title=\"" + escapedLogger + " category\">"); sbuf.append(escapedLogger); LocationInfo locInfo = event.getLocationInformation(); sbuf.append("<td>"); sbuf.append(Transform.escapeTags(locInfo.getFileName())); sbuf.append(':'); sbuf.append(locInfo.getLineNumber()); sbuf.append("</td>" + Layout.LINE_SEP);
private static LoggingEvent replaceEventMessage(LoggingEvent event, String message) { return new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(), event.getTimeStamp(), event.getLevel(), message, event.getThreadName(), event.getThrowableInformation(), event.getNDC(), event.getLocationInformation(), event.getProperties()); } }
buf.append(Transform.escapeTags(event.getLoggerName())); buf.append("\" timestamp=\""); buf.append(event.timeStamp); buf.append("\" level=\""); buf.append(Transform.escapeTags(String.valueOf(event.getLevel()))); buf.append("\" thread=\""); buf.append(Transform.escapeTags(event.getThreadName())); buf.append("\">\r\n"); Transform.appendEscapingCDATA(buf, event.getRenderedMessage()); buf.append("]]></log4j:message>\r\n"); String ndc = event.getNDC(); if(ndc != null) { buf.append("<log4j:NDC><![CDATA["); String[] s = event.getThrowableStrRep(); if(s != null) { buf.append("<log4j:throwable><![CDATA["); LocationInfo locationInfo = event.getLocationInformation(); buf.append("<log4j:locationInfo class=\""); buf.append(Transform.escapeTags(locationInfo.getClassName())); buf.append("\" method=\""); buf.append(Transform.escapeTags(locationInfo.getMethodName())); buf.append("\" file=\""); buf.append(Transform.escapeTags(locationInfo.getFileName())); Set keySet = event.getPropertyKeySet();
@Test public void testKafkaReporter() { TestAppender testAppender = new TestAppender(); Logger logger = LogManager.getLogger(LoggingPusher.class.getName()); logger.addAppender(testAppender); LoggingPusher<String> loggingPusher = new LoggingPusher<String>("broker", "topic", Optional.absent()); loggingPusher.pushMessages(ImmutableList.of("message1", "message2")); Assert.assertEquals(testAppender.events.size(), 2); Assert.assertEquals(testAppender.events.get(0).getRenderedMessage(), "Pushing to broker:topic: message1"); Assert.assertEquals(testAppender.events.get(1).getRenderedMessage(), "Pushing to broker:topic: message2"); logger.removeAppender(testAppender); }
String category = event.getLoggerName(); String logMessage = event.getRenderedMessage(); String nestedDiagnosticContext = event.getNDC(); String threadDescription = event.getThreadName(); String level = event.getLevel().toString(); long time = event.timeStamp; LocationInfo locationInfo = event.getLocationInformation(); if (event.getThrowableInformation() != null) { record.setThrownStackTrace(event.getThrowableInformation());
@Override public String format(LoggingEvent loggingEvent) { String loggerName = loggingEvent.getLoggerName(); String level = loggingEvent.getLevel().toString(); String message = loggingEvent.getMessage().toString().trim(); if(!message.startsWith("{") && !message.startsWith("[")){ message = "\"" + message + "\""; } String threadName = loggingEvent.getThreadName(); Date timeStamp = new Date(loggingEvent.getTimeStamp()); String context = Context.toJSON(); ThrowableInformation throwableInformation = loggingEvent.getThrowableInformation(); String exception = ""; if(throwableInformation != null){ exception = ",\"exception\":{\"message\":\""; Throwable throwable = throwableInformation.getThrowable(); String exceptionMessage = throwable.getMessage() != null? throwable.getMessage(): ""; //need to be careful here, sanitizing, since the message may already contain a chunk of JSON, so escaping or cleaning double quotes is not prudent:) exception += sanitize(exceptionMessage, false, '\n', '\t', '\r') + "\",\"stacktrace\":\"" + escapeControlChars(Util.getStackTraceString(throwable)) + "\"}"; } String contextJson = context != null ? ",\"context\":" + context : ""; String timestampString = this.simpleDateFormat == null ? timeStamp.toString() : simpleDateFormat.format(timeStamp); return "{\"level\":\"" + level + "\",\"timestamp\":\"" + timestampString + "\",\"thread\":\"" + threadName + "\",\"logger\":\"" + loggerName + "\",\"message\":" + message + contextJson + exception + "}" + System.getProperty("line.separator"); }
/** * Append a log event at the appropriate JUL level, depending on the log4j level. */ @Override protected void append(LoggingEvent loggingEvent) { java.util.logging.Logger logger = java.util.logging.Logger.getLogger(loggingEvent.getLoggerName()); if (logger == null) { LogLog.warn(format("Cannot obtain JUL %s. Verify that this appender is used while an appropriate LogManager is active.", loggingEvent.getLoggerName())); return; } Level level = loggingEvent.getLevel(); java.util.logging.Level julLevel = convertLog4jLevel(level); LogRecord record = new LogRecord(julLevel, loggingEvent.getRenderedMessage()); record.setMillis(loggingEvent.getTimeStamp()); LocationInfo location = loggingEvent.getLocationInformation(); if (location != null) { record.setSourceClassName(location.getClassName()); record.setSourceMethodName(location.getMethodName()); } logger.log(record); }
/** * Adds the event to the buffer. When full the buffer is flushed. */ public void append(LoggingEvent event) { event.getNDC(); event.getThreadName(); // Get a copy of this thread's MDC. event.getMDCCopy(); if (locationInfo) { event.getLocationInformation(); } event.getRenderedMessage(); event.getThrowableStrRep(); buffer.add(event); if (buffer.size() >= bufferSize) flushBuffer(); }
buf.append(event.getThreadName()); buf.append("] "); buf.append(event.getLevel().toString()); buf.append(' '); buf.append(event.getLoggerName()); buf.append(' '); String ndc = event.getNDC(); buf.append(event.getRenderedMessage()); buf.append(LINE_SEP); return buf.toString();
/** * Create a copy of event, but append a stack trace to the message (if it exists). Then it escapes * the backslashes, tabs, newlines and quotes in its message as we are sending it as JSON and we * don't want any corruption of the JSON object. */ private LoggingEvent appendStackTraceToEvent(final LoggingEvent event) { String message = event.getMessage().toString(); // If there is a stack trace available, print it out if (event.getThrowableInformation() != null) { final String[] s = event.getThrowableStrRep(); for (final String line : s) { message += "\n" + line; } } message = message .replace("\\", "\\\\") .replace("\n", "\\n") .replace("\"", "\\\"") .replace("\t", "\\t"); final Throwable throwable = event.getThrowableInformation() == null ? null : event.getThrowableInformation().getThrowable(); return new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(), event.getTimeStamp(), event.getLevel(), message, throwable); } }