Skip to content

Commit

Permalink
Configs updates
Browse files Browse the repository at this point in the history
  • Loading branch information
justcoon committed Jul 14, 2023
1 parent c9c11e6 commit e4a0b73
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ import zio.{ Chunk, Config, ConfigProvider, LogLevel, Queue, Runtime, Schedule,
object ReconfigurableLoggerSpec extends ZIOSpecDefault {

def configuredLogger(
queue: zio.Queue[String],
configPath: String = "logger"
queue: zio.Queue[String]
): ZLayer[Any, Config.Error, Unit] =
ZLayer.scoped {
for {
logger <- ReconfigurableLogger
.make[Any, Config.Error, String, Any, ConsoleLoggerConfig](
ConsoleLoggerConfig.load(configPath),
ConsoleLoggerConfig.load(),
(config, _) =>
ZIO.succeed {
config.format.toLogger.map { line =>
Expand Down
10 changes: 6 additions & 4 deletions core/shared/src/main/scala/zio/logging/ConsoleLoggerConfig.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package zio.logging

import zio.prelude._
import zio.{ Config, ZIO, ZLayer }
import zio.{ Config, NonEmptyChunk, ZIO, ZLayer }

final case class ConsoleLoggerConfig(
format: LogFormat,
Expand Down Expand Up @@ -44,10 +44,12 @@ object ConsoleLoggerConfig {
l.format == r.format && l.filter === r.filter
}

def load(configPath: String = "logger"): ZIO[Any, Config.Error, ConsoleLoggerConfig] =
ZIO.config(ConsoleLoggerConfig.config.nested(configPath))
def load(configPath: NonEmptyChunk[String] = loggerConfigPath): ZIO[Any, Config.Error, ConsoleLoggerConfig] =
ZIO.config(ConsoleLoggerConfig.config.nested(configPath.head, configPath.tail: _*))

def make(configPath: String = "logger"): ZLayer[Any, Config.Error, ConsoleLoggerConfig] =
def make(
configPath: NonEmptyChunk[String] = loggerConfigPath
): ZLayer[Any, Config.Error, ConsoleLoggerConfig] =
ZLayer.fromZIO(load(configPath))

}
8 changes: 5 additions & 3 deletions core/shared/src/main/scala/zio/logging/FileLoggerConfig.scala
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,12 @@ object FileLoggerConfig {
l.filter === r.filter
}

def load(configPath: String = "logger"): ZIO[Any, Config.Error, FileLoggerConfig] =
ZIO.config(FileLoggerConfig.config.nested(configPath))
def load(configPath: NonEmptyChunk[String] = loggerConfigPath): ZIO[Any, Config.Error, FileLoggerConfig] =
ZIO.config(FileLoggerConfig.config.nested(configPath.head, configPath.tail: _*))

def make(configPath: String = "logger"): ZLayer[Any, Config.Error, FileLoggerConfig] =
def make(
configPath: NonEmptyChunk[String] = loggerConfigPath
): ZLayer[Any, Config.Error, FileLoggerConfig] =
ZLayer.fromZIO(load(configPath))

}
37 changes: 20 additions & 17 deletions core/shared/src/main/scala/zio/logging/LoggerLayers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package zio.logging

import zio.metrics.Metric
import zio.{ Config, Queue, Runtime, Scope, Tag, UIO, ZIO, ZLayer, ZLogger }
import zio.{ Config, NonEmptyChunk, Queue, Runtime, Scope, Tag, UIO, ZIO, ZLayer, ZLogger }

import java.io.PrintStream
import java.nio.charset.Charset
Expand All @@ -40,59 +40,59 @@ private[logging] trait LoggerLayers {
def consoleErrJsonLogger(config: ConsoleLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeConsoleErrJsonLogger(config).install

def consoleErrJsonLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def consoleErrJsonLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
ConsoleLoggerConfig.load(configPath).flatMap(makeConsoleErrJsonLogger).install

def consoleErrLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def consoleErrLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
ConsoleLoggerConfig.load(configPath).flatMap(makeConsoleErrLogger).install

def consoleJsonLogger(config: ConsoleLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeConsoleJsonLogger(config).install

def consoleJsonLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def consoleJsonLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
ConsoleLoggerConfig.load(configPath).flatMap(makeConsoleJsonLogger).install

def consoleLogger(config: ConsoleLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeConsoleLogger(config).install

def consoleLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def consoleLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
ConsoleLoggerConfig.load(configPath).flatMap(makeConsoleLogger).install

def fileAsyncJsonLogger(config: FileLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeFileAsyncJsonLogger(config).installUnscoped

def fileAsyncJsonLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def fileAsyncJsonLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
FileLoggerConfig.load(configPath).flatMap(makeFileAsyncJsonLogger).installUnscoped

def fileAsyncLogger(config: FileLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeFileAsyncLogger(config).installUnscoped

def fileAsyncLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def fileAsyncLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
FileLoggerConfig.load(configPath).flatMap(makeFileAsyncLogger).installUnscoped

def fileJsonLogger(config: FileLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeFileJsonLogger(config).install

def fileJsonLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def fileJsonLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
FileLoggerConfig.load(configPath).flatMap(makeFileJsonLogger).install

def fileLogger(config: FileLoggerConfig): ZLayer[Any, Nothing, Unit] =
makeFileLogger(config).install

def fileLogger(configPath: String = "logger"): ZLayer[Any, Config.Error, Unit] =
def fileLogger(configPath: NonEmptyChunk[String] = loggerConfigPath): ZLayer[Any, Config.Error, Unit] =
FileLoggerConfig.load(configPath).flatMap(makeFileLogger).install

def makeConsoleErrLogger(config: ConsoleLoggerConfig): ZIO[Any, Nothing, ZLogger[String, Any]] =
makeSystemErrLogger(config.format.toLogger).map(logger => FilteredLogger(logger, config.toFilter))
makeSystemErrLogger(config.format.toLogger).filter(config.toFilter)

def makeConsoleErrJsonLogger(config: ConsoleLoggerConfig): ZIO[Any, Nothing, ZLogger[String, Any]] =
makeSystemErrLogger(config.format.toJsonLogger).map(logger => FilteredLogger(logger, config.toFilter))
makeSystemErrLogger(config.format.toJsonLogger).filter(config.toFilter)

def makeConsoleLogger(config: ConsoleLoggerConfig): ZIO[Any, Nothing, ZLogger[String, Any]] =
makeSystemOutLogger(config.format.toLogger).map(logger => FilteredLogger(logger, config.toFilter))
makeSystemOutLogger(config.format.toLogger).filter(config.toFilter)

def makeConsoleJsonLogger(config: ConsoleLoggerConfig): ZIO[Any, Nothing, ZLogger[String, Any]] =
makeSystemOutLogger(config.format.toJsonLogger).map(logger => FilteredLogger(logger, config.toFilter))
makeSystemOutLogger(config.format.toJsonLogger).filter(config.toFilter)

def makeSystemOutLogger(
logger: ZLogger[String, String]
Expand Down Expand Up @@ -129,7 +129,7 @@ private[logging] trait LoggerLayers {
config.autoFlushBatchSize,
config.bufferedIOSize,
config.rollingPolicy
).map(logger => FilteredLogger(logger, config.toFilter))
).filter(config.toFilter)

def makeFileAsyncLogger(config: FileLoggerConfig): ZIO[Scope, Nothing, FilteredLogger[String, Any]] =
makeFileAsyncLogger(
Expand All @@ -139,7 +139,7 @@ private[logging] trait LoggerLayers {
config.autoFlushBatchSize,
config.bufferedIOSize,
config.rollingPolicy
).map(logger => FilteredLogger(logger, config.toFilter))
).filter(config.toFilter)

def makeFileAsyncLogger(
destination: Path,
Expand Down Expand Up @@ -196,7 +196,7 @@ private[logging] trait LoggerLayers {
config.autoFlushBatchSize,
config.bufferedIOSize,
config.rollingPolicy
).map(logger => FilteredLogger(logger, config.toFilter))
).filter(config.toFilter)

def makeFileLogger(config: FileLoggerConfig): ZIO[Any, Nothing, FilteredLogger[String, Any]] =
makeFileLogger(
Expand All @@ -206,7 +206,7 @@ private[logging] trait LoggerLayers {
config.autoFlushBatchSize,
config.bufferedIOSize,
config.rollingPolicy
).map(logger => FilteredLogger(logger, config.toFilter))
).filter(config.toFilter)

def makeFileLogger(
destination: Path,
Expand Down Expand Up @@ -249,6 +249,9 @@ private[logging] trait LoggerLayers {
private val self: ZIO[RIn, E, ROut]
) {

def filter(filter: LogFilter[String]): ZIO[RIn, E, FilteredLogger[String, Any]] =
self.map(logger => FilteredLogger(logger, filter))

def install: ZLayer[RIn, E, Unit] =
ZLayer.scoped[RIn] {
self.flatMap { logger =>
Expand Down
2 changes: 2 additions & 0 deletions core/shared/src/main/scala/zio/logging/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ package object logging extends LoggerLayers {
*/
val loggerNameAnnotationKey = "logger_name"

val loggerConfigPath: NonEmptyChunk[String] = NonEmptyChunk("logger")

/**
* Logger name aspect, by this aspect is possible to set logger name (in general, logger name is extracted from [[Trace]])
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import zio.logging.{
ConfigurableLogger,
ConsoleLoggerConfig,
LogAnnotation,
LogFilter,
LoggerConfigurer,
loggerConfigPath,
makeSystemOutLogger
}
import zio.{ ExitCode, Runtime, Scope, ZIO, ZIOAppDefault, _ }
Expand All @@ -32,7 +32,7 @@ import java.util.UUID

object ConfigurableLoggerApp extends ZIOAppDefault {

def configurableLogger(configPath: String = "logger") =
def configurableLogger(configPath: NonEmptyChunk[String] = loggerConfigPath) =
ConsoleLoggerConfig
.load(configPath)
.flatMap { consoleLoggerConfig =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
package zio.logging.example

import zio.logging.{ ConsoleLoggerConfig, LogAnnotation, ReconfigurableLogger, makeSystemOutLogger }
import zio.logging.{ ConsoleLoggerConfig, LogAnnotation, ReconfigurableLogger, _ }
import zio.{ Config, ExitCode, Runtime, Scope, ZIO, ZIOAppDefault, _ }

import java.util.UUID
Expand All @@ -31,10 +31,7 @@ object LoggerReconfigureApp extends ZIOAppDefault {
ReconfigurableLogger
.make[Any, Config.Error, String, Any, ConsoleLoggerConfig](
loadConfig,
(config, _) =>
makeSystemOutLogger(config.format.toLogger).map { logger =>
config.toFilter.filter(logger)
},
(config, _) => makeSystemOutLogger(config.format.toLogger).filter(config.filter.toFilter),
Schedule.fixed(500.millis)
)
.installUnscoped
Expand Down

0 comments on commit e4a0b73

Please sign in to comment.