diff --git a/service/pom.xml b/service/pom.xml index 2b6486a3f..1eb3aea55 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -50,12 +50,6 @@ bcprov-jdk16 1.46 - - org.syslog4j - syslog4j - 0.9.30 - - io.github.resilience4j diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java deleted file mode 100644 index 70425fd4a..000000000 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/LoggingNetworkAppenderFactory.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright 2013-2020 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.metrics; - - -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.classic.util.LevelToSyslogSeverity; -import ch.qos.logback.core.Appender; -import ch.qos.logback.core.AppenderBase; -import ch.qos.logback.core.Layout; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonTypeName; -import io.dropwizard.logging.AbstractAppenderFactory; -import io.dropwizard.logging.async.AsyncAppenderFactory; -import io.dropwizard.logging.filter.LevelFilterFactory; -import io.dropwizard.logging.layout.LayoutFactory; -import io.dropwizard.validation.PortRange; -import java.util.TimeZone; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import org.productivity.java.syslog4j.SyslogConfigIF; -import org.productivity.java.syslog4j.SyslogIF; -import org.productivity.java.syslog4j.SyslogRuntimeException; -import org.productivity.java.syslog4j.impl.net.tcp.ssl.SSLTCPNetSyslogConfig; - -@JsonTypeName("papertrail") -public class LoggingNetworkAppenderFactory extends AbstractAppenderFactory { - - @JsonProperty - @NotEmpty - private String ident; - - @JsonProperty - @NotEmpty - private String host; - - @JsonProperty - @PortRange(min = 1) - @NotNull - private Integer port; - - @JsonProperty - private TimeZone timeZone = TimeZone.getTimeZone("UTC"); - - @JsonProperty - @NotEmpty - private String facility = "USER"; - - @JsonProperty - private boolean sendLocalName = true; - - public String getIdent() { - return ident; - } - - public void setIdent(final String ident) { - this.ident = ident; - } - - public String getHost() { - return host; - } - - public void setHost(final String host) { - this.host = host; - } - - public Integer getPort() { - return port; - } - - public void setPort(final Integer port) { - this.port = port; - } - - public TimeZone getTimeZone() { - return timeZone; - } - - public void setTimeZone(final TimeZone timeZone) { - this.timeZone = timeZone; - } - - public String getFacility() { - return facility; - } - - public void setFacility(final String facility) { - this.facility = facility; - } - - public boolean isSendLocalName() { - return sendLocalName; - } - - public void setSendLocalName(final boolean sendLocalName) { - this.sendLocalName = sendLocalName; - } - - @Override - public Appender build(LoggerContext context, - String applicationName, - LayoutFactory layoutFactory, - LevelFilterFactory levelFilterFactory, - AsyncAppenderFactory asyncAppenderFactory) - { - final Syslog4jAppender syslogAppender = new Syslog4jAppender<>(); - syslogAppender.setContext(context); - syslogAppender.setLayout(buildLayout(context, layoutFactory)); - syslogAppender.setName("SYSLOG-TLS"); - final SSLTCPNetSyslogConfig syslogConfig = new SSLTCPNetSyslogConfig(); - - syslogConfig.setIdent(ident); - syslogConfig.setHost(host); - syslogConfig.setPort(port); - syslogConfig.setFacility(facility); - syslogConfig.setSendLocalName(sendLocalName); - - syslogAppender.setSyslogConfig(syslogConfig); - - syslogAppender.addFilter(levelFilterFactory.build(threshold)); - syslogAppender.start(); - - return syslogAppender; - } - - - private static class Syslog4jAppender extends AppenderBase { - SyslogIF syslog; - SyslogConfigIF syslogConfig; - Layout layout; - - @Override - protected void append(E loggingEvent) { - syslog.log(getSeverityForEvent(loggingEvent), layout.doLayout(loggingEvent)); - } - - @Override - public void start() { - super.start(); - - synchronized (this) { - try { - Class syslogClass = syslogConfig.getSyslogClass(); - syslog = (SyslogIF) syslogClass.newInstance(); - - syslog.initialize(syslogClass.getSimpleName(), syslogConfig); - } catch (ClassCastException | IllegalAccessException | InstantiationException cse) { - throw new SyslogRuntimeException(cse); - } - } - } - - @Override - public void stop() { - super.stop(); - - synchronized(this) { - if (syslog != null) { - syslog.shutdown(); - syslog = null; - } - } - } - - /** - * Convert a level to equivalent syslog severity. Only levels for printing - * methods i.e DEBUG, WARN, INFO and ERROR are converted. - * - * @see ch.qos.logback.core.net.SyslogAppenderBase#getSeverityForEvent(java.lang.Object) - */ - public int getSeverityForEvent(Object eventObject) { - if (eventObject instanceof ILoggingEvent) { - ILoggingEvent event = (ILoggingEvent) eventObject; - return LevelToSyslogSeverity.convert(event); - } else { - return SyslogIF.LEVEL_INFO; - } - } - - public SyslogConfigIF getSyslogConfig() { - return syslogConfig; - } - - public void setSyslogConfig(SyslogConfigIF syslogConfig) { - this.syslogConfig = syslogConfig; - } - - public Layout getLayout() { - return layout; - } - - public void setLayout(Layout layout) { - this.layout = layout; - } - } -}