private void setupStackTraceLayout() { stackTraceLayout.getInstanceConverterMap().put("syslogStart", SyslogStartConverter.class.getName()); stackTraceLayout.setPattern(getPrefixPattern() + stackTracePattern); stackTraceLayout.setContext(getContext()); stackTraceLayout.start(); }
String getPrefixPattern() { return "%syslogStart{" + getFacility() + "}%nopex{}"; }
public void start() { super.start(); setupStackTraceLayout(); }
@Override public SyslogOutputStream createOutputStream() throws SocketException, UnknownHostException { return new SyslogOutputStream(getSyslogHost(), getPort()); }
@Override public Appender<ILoggingEvent> build(LoggerContext context, String applicationName, LayoutFactory<ILoggingEvent> layoutFactory, LevelFilterFactory<ILoggingEvent> levelFilterFactory, AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) { final SyslogAppender appender = new SyslogAppender(); appender.setName("syslog-appender"); appender.setContext(context); if (logFormat != null && !logFormat.isEmpty()) { appender.setSuffixPattern(logFormat .replaceAll(LOG_TOKEN_PID, pid) .replaceAll(LOG_TOKEN_NAME, Matcher.quoteReplacement(applicationName))); } appender.setSyslogHost(host); appender.setPort(port); appender.setFacility(facility.toString().toLowerCase(Locale.ENGLISH)); appender.setThrowableExcluded(!includeStackTrace); appender.setStackTracePattern(stackTracePrefix); appender.addFilter(levelFilterFactory.build(threshold)); getFilterFactories().forEach(f -> appender.addFilter(f.build())); appender.start(); return wrapAsync(appender, asyncAppenderFactory); } }
static ch.qos.logback.classic.net.SyslogAppender constructAppender(final Config config) { final String suffixPattern = config.suffix_pattern(); final int port = config.port(); final String host = config.host(); final String facility = config.facility(); final String stackTracePattern = config.stack_trace_pattern(); final boolean throwableExcluded = config.throwable_excluded(); if (StringUtils.isEmpty(host) || port == -1) { throw new IllegalArgumentException( "Syslog Appender not configured correctly. Both host and port need to be provided."); } // throws a descriptive IllegalArgumentException if facility is not valid. SyslogAppenderBase.facilityStringToint(facility); final ch.qos.logback.classic.net.SyslogAppender appender = new ch.qos.logback.classic.net.SyslogAppender(); appender.setSyslogHost(host); appender.setPort(port); appender.setFacility(facility); appender.setSuffixPattern(suffixPattern); if (StringUtils.isNotEmpty(stackTracePattern)) { appender.setStackTracePattern(stackTracePattern); } appender.setThrowableExcluded(throwableExcluded); return appender; }
public static SyslogAppender buildSyslogAppender( LoggingConfiguration.SyslogConfiguration syslog, LoggerContext context, String name, String logFormat) { final SyslogAppender appender = new SyslogAppender(); appender.setName(name); appender.setContext(context); appender.setSyslogHost(syslog.getHost()); appender.setFacility(syslog.getFacility().toString()); addThresholdFilter(appender, syslog.getThreshold()); if (logFormat != null) { appender.setSuffixPattern(logFormat); } appender.start(); return appender; }
appender = new SyslogAppender(); ((SyslogAppender)appender).setSyslogHost(((SyslogOutput) output).getHostName()); ((SyslogAppender)appender).setFacility(((SyslogOutput) output).getFacility()); ((SyslogAppender) appender).setSuffixPattern(output.getPattern()); } else { throw new IllegalArgumentException("unknown logging output type: "+output.getClass().getName());
public static SyslogAppender buildSyslogAppender(SyslogConfiguration syslog, LoggerContext context, String name, Optional<String> logFormat) { final SyslogFormatter layout = new SyslogFormatter(context, syslog.getTimeZone(), name); layout.setOutputPatternAsHeader(false); layout.setContext(context); for (String format : logFormat.asSet()) { layout.setPattern(format); } layout.start(); final SyslogAppender appender = new SyslogAppender(); appender.setContext(context); appender.setLayout(layout); appender.setSyslogHost(syslog.getHost()); appender.setFacility(syslog.getFacility()); addThresholdFilter(appender, syslog.getThreshold()); appender.start(); return appender; }
Logger root = Logger.getRootLogger(); SyslogAppender syslogAppender = new SyslogAppender(); syslogAppender.setSyslogHost(<host ip:port>); syslogAppender.setThreshold(<required Level>); syslogAppender.setLayout(new PatternLayout(<required pattern>)); root.addAppender(syslogAppender);
@Override protected void postProcess(Object eventObject, OutputStream sw) { if (throwableExcluded) return; ILoggingEvent event = (ILoggingEvent) eventObject; IThrowableProxy tp = event.getThrowableProxy(); if (tp == null) return; String stackTracePrefix = stackTraceLayout.doLayout(event); boolean isRootException = true; while (tp != null) { StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray(); try { handleThrowableFirstLine(sw, tp, stackTracePrefix, isRootException); isRootException = false; for (StackTraceElementProxy step : stepArray) { StringBuilder sb = new StringBuilder(); sb.append(stackTracePrefix).append(step); sw.write(sb.toString().getBytes()); sw.flush(); } } catch (IOException e) { break; } tp = tp.getCause(); } }
public Layout<ILoggingEvent> buildLayout(String facilityStr) { String prefixPattern = "%syslogStart{" + facilityStr + "}%nopex"; prefixLayout.getInstanceConverterMap().put("syslogStart", SyslogStartConverter.class.getName()); prefixLayout.setPattern(prefixPattern); prefixLayout.setContext(getContext()); prefixLayout.start(); PatternLayout fullLayout = new PatternLayout(); fullLayout.getInstanceConverterMap().put("syslogStart", SyslogStartConverter.class.getName()); if (suffixPattern == null) { suffixPattern = DEFAULT_SUFFIX_PATTERN; } fullLayout.setPattern(prefixPattern + suffixPattern); fullLayout.setContext(getContext()); fullLayout.start(); return fullLayout; }
@Override public Appender<ILoggingEvent> build(LoggerContext context, String applicationName, LayoutFactory<ILoggingEvent> layoutFactory, LevelFilterFactory<ILoggingEvent> levelFilterFactory, AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) { final SyslogAppender appender = new SyslogAppender(); appender.setName("syslog-appender"); appender.setContext(context); if (!isNullOrEmpty(logFormat)) { appender.setSuffixPattern(logFormat .replaceAll(LOG_TOKEN_PID, pid) .replaceAll(LOG_TOKEN_NAME, Matcher.quoteReplacement(applicationName))); } appender.setSyslogHost(host); appender.setPort(port); appender.setFacility(facility.toString().toLowerCase(Locale.ENGLISH)); appender.setThrowableExcluded(!includeStackTrace); appender.setStackTracePattern(stackTracePrefix); appender.addFilter(levelFilterFactory.build(threshold)); getFilterFactories().forEach(f -> appender.addFilter(f.build())); appender.start(); return wrapAsync(appender, asyncAppenderFactory); } }
appender = new ch.qos.logback.classic.net.SyslogAppender(); appender.setSyslogHost(host); appender.setPort(port); appender.setFacility(facility); appender.setSuffixPattern(suffixPattern); appender.setStackTracePattern(stackTracePattern); appender.setThrowableExcluded(throwableExcluded);
appender = new SyslogAppender(); ((SyslogAppender)appender).setSyslogHost(((SyslogOutput) output).getHostName()); ((SyslogAppender)appender).setFacility(((SyslogOutput) output).getFacility()); ((SyslogAppender) appender).setSuffixPattern(output.getPattern()); } else { throw new IllegalArgumentException("unknown logging output type: "+output.getClass().getName());
@Override public SyslogOutputStream createOutputStream() throws SocketException, UnknownHostException { return new SyslogOutputStream(getSyslogHost(), getPort()); }
@Override protected void postProcess(Object eventObject, OutputStream sw) { if (throwableExcluded) return; ILoggingEvent event = (ILoggingEvent) eventObject; IThrowableProxy tp = event.getThrowableProxy(); if (tp == null) return; String stackTracePrefix = stackTraceLayout.doLayout(event); boolean isRootException = true; while (tp != null) { StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray(); try { handleThrowableFirstLine(sw, tp, stackTracePrefix, isRootException); isRootException = false; for (StackTraceElementProxy step : stepArray) { StringBuilder sb = new StringBuilder(); sb.append(stackTracePrefix).append(step); sw.write(sb.toString().getBytes()); sw.flush(); } } catch (IOException e) { break; } tp = tp.getCause(); } }
public Layout<ILoggingEvent> buildLayout() { PatternLayout layout = new PatternLayout(); layout.getInstanceConverterMap().put("syslogStart", SyslogStartConverter.class.getName()); if (suffixPattern == null) { suffixPattern = DEFAULT_SUFFIX_PATTERN; } layout.setPattern(getPrefixPattern() + suffixPattern); layout.setContext(getContext()); layout.start(); return layout; }
@Override public SyslogOutputStream createOutputStream() throws SocketException, UnknownHostException { return new SyslogOutputStream(getSyslogHost(), getPort()); }
String getPrefixPattern() { return "%syslogStart{" + getFacility() + "}%nopex{}"; }