Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
104 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
version = 2.2.2 | ||
version = 2.4.2 | ||
maxColumn = 120 | ||
align = most | ||
align.openParenDefnSite = true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.2.1") | ||
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.3.2") | ||
addSbtPlugin("io.crashbox" % "sbt-gpg" % "0.2.0") | ||
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.8.1") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,41 @@ | ||
package com.github.mvv.zilog | ||
|
||
import zio.ZIO | ||
import zio.{Has, UIO, ULayer, URIO, ZLayer} | ||
|
||
import scala.language.experimental.macros | ||
|
||
trait Logger { | ||
def logger: Logger.Service[Any] | ||
} | ||
|
||
object Logger { | ||
trait Service[-R] { | ||
def log(level: Level, format: String, args: Array[Any])(implicit ctx: LoggerContext): ZIO[R, Nothing, Unit] | ||
final def error(message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logError | ||
final def error(e: Throwable, message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logErrorWithThrowable | ||
final def warn(message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logWarn | ||
final def warn(e: Throwable, message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logWarnWithThrowable | ||
final def info(message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logInfo | ||
final def info(e: Throwable, message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logInfoWithThrowable | ||
final def debug(message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logDebug | ||
final def debug(e: Throwable, message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logDebugWithThrowable | ||
final def trace(message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logTrace | ||
final def trace(e: Throwable, message: String): ZIO[R, Nothing, Unit] = macro LoggerMacro.logTraceWithThrowable | ||
trait Interface[-R] { | ||
def log(level: Level, format: String, args: Array[Any])(implicit ctx: LoggerContext): URIO[R, Unit] | ||
final def error(message: String): URIO[R, Unit] = macro LoggerMacro.logError | ||
final def error(e: Throwable, message: String): URIO[R, Unit] = macro LoggerMacro.logErrorWithThrowable | ||
final def warn(message: String): URIO[R, Unit] = macro LoggerMacro.logWarn | ||
final def warn(e: Throwable, message: String): URIO[R, Unit] = macro LoggerMacro.logWarnWithThrowable | ||
final def info(message: String): URIO[R, Unit] = macro LoggerMacro.logInfo | ||
final def info(e: Throwable, message: String): URIO[R, Unit] = macro LoggerMacro.logInfoWithThrowable | ||
final def debug(message: String): URIO[R, Unit] = macro LoggerMacro.logDebug | ||
final def debug(e: Throwable, message: String): URIO[R, Unit] = macro LoggerMacro.logDebugWithThrowable | ||
final def trace(message: String): URIO[R, Unit] = macro LoggerMacro.logTrace | ||
final def trace(e: Throwable, message: String): URIO[R, Unit] = macro LoggerMacro.logTraceWithThrowable | ||
} | ||
|
||
object Default extends Logger { | ||
override val logger: Service[Any] = new Service[Any] { | ||
override def log(level: Level, format: String, args: Array[Any])( | ||
implicit ctx: LoggerContext | ||
): ZIO[Any, Nothing, Unit] = | ||
ZIO.effectTotal(ctx.log(level, format, args)) | ||
trait Service extends Interface[Any] | ||
|
||
object Service { | ||
val live: Service = new Service { | ||
override def log(level: Level, format: String, args: Array[Any])(implicit ctx: LoggerContext): UIO[Unit] = | ||
UIO.effectTotal(ctx.log(level, format, args)) | ||
} | ||
def prefix(prefix: String, service: Service): Service = new Service { | ||
override def log(level: Level, format: String, args: Array[Any])(implicit ctx: LoggerContext): URIO[Any, Unit] = | ||
service.log(level, s"$prefix$format", args) | ||
} | ||
} | ||
|
||
val any: ZLayer[Logger, Nothing, Logger] = ZLayer.requires[Logger] | ||
val live: ULayer[Logger] = ZLayer.succeed(Service.live) | ||
def prefix(prefix: String): ZLayer[Logger, Nothing, Logger] = | ||
ZLayer.requires[Logger].map(has => Has(Service.prefix(prefix, has.get))) | ||
|
||
val NoArgs: Array[Any] = Array.empty[Any] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,11 @@ | ||
package com.github.mvv | ||
|
||
import zio.ZIO | ||
import zio.{Has, URIO, ZIO} | ||
|
||
package object zilog extends Logger.Service[Logger] with ImplicitArgsLogger.Service[ImplicitArgsLogger] { | ||
override def log(level: Level, format: String, args: Array[Any])( | ||
implicit ctx: LoggerContext | ||
): ZIO[Logger, Nothing, Unit] = | ||
ZIO.accessM[Logger](_.logger.log(level, format, args)) | ||
override def withImplicitLogArgs[R1 <: ImplicitArgsLogger, E, A]( | ||
args: (String, Any)* | ||
)(zio: ZIO[R1, E, A]): ZIO[R1, E, A] = | ||
ZIO.accessM[R1](_.logger.withImplicitLogArgs(args: _*)(zio)) | ||
package object zilog extends Logger.Interface[Has[Logger.Service]] { | ||
type Logger = Has[Logger.Service] | ||
type ImplicitArgsLogger = Has[ImplicitArgsLogger.Service] | ||
|
||
override def log(level: Level, format: String, args: Array[Any])(implicit ctx: LoggerContext): URIO[Logger, Unit] = | ||
ZIO.accessM[Logger](_.get.log(level, format, args)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters