All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.malliina.logstreams.client.SocketAppender.scala Maven / Gradle / Ivy

The newest version!
package com.malliina.logstreams.client

import cats.effect.kernel.Async
import com.malliina.http.FullUrl
import com.malliina.logback.fs2.{DefaultFS2IOAppender, LoggingComps}

class SocketAppender[F[_]: Async, T](comps: LoggingComps[F]) extends DefaultFS2IOAppender[F](comps):
  var endpoint: Option[FullUrl] = None
  var username: Option[String] = None
  var password: Option[String] = None
  var client: Option[T] = None
  private var enabled: Boolean = false
  private var secure: Boolean = true

  def getEndpoint: String = endpoint.map(_.url).orNull

  def setEndpoint(dest: String): Unit =
    FullUrl
      .build(dest)
      .fold(
        err => addError(err.message),
        url =>
          addInfo(s"Setting endpoint '$url' for appender [$name].")
          endpoint = Option(url)
      )

  def getUsername: String = username.orNull

  def setUsername(user: String): Unit =
    addInfo(s"Setting username '$user' for appender [$name].")
    username = Option(user)

  def getPassword: String = password.orNull

  def setPassword(pass: String): Unit =
    addInfo(s"Setting password for appender [$name].")
    password = Option(pass)

  def getSecure: Boolean = secure

  def setSecure(isSecure: Boolean): Unit =
    addInfo(s"Setting secure '$isSecure' for appender [$name].")
    secure = isSecure

  def getEnabled: Boolean = enabled

  def setEnabled(isEnabled: Boolean): Unit =
    addInfo(s"Setting enabled '$isEnabled' for appender [$name].")
    enabled = isEnabled

  def toMissing[O](o: Option[O], fieldName: String) = o.toRight(missing(fieldName))

  def missing(fieldName: String) = s"No '$fieldName' is set for appender [$name]."

  override def stop(): Unit =
    super.stop()




© 2015 - 2025 Weber Informatics LLC | Privacy Policy