Skip to content

Commit

Permalink
Fixed #4, #5, #8, #9, #10, #11, #12
Browse files Browse the repository at this point in the history
  • Loading branch information
apryamostanov committed Dec 12, 2018
1 parent 8a85755 commit 59b9a60
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 25 deletions.
23 changes: 19 additions & 4 deletions src/main/groovy/io/infinite/bobbin/Bobbin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,25 @@ class Bobbin {

BobbinConfig bobbinConfig

Map<String, Object> contextMap = [:]

Object get(String key) {
return contextMap.get(key)
}

void set(String key, Object value) {
contextMap.put(key, value)
}

@Memoized
Boolean isLevelEnabled(Level level) {
scriptEngine.put("level", level.value())
scriptEngine.put("all", true)
return scriptEngine.eval(bobbinConfig.levels)
}

@Memoized(maxCacheSize = 128)
final Boolean isClassEnabled(String className) {
scriptEngine.put("className", className)
scriptEngine.put("all", true)
return scriptEngine.eval(bobbinConfig.classes)
}

Expand All @@ -32,10 +40,17 @@ class Bobbin {
}

Bobbin(BobbinConfig bobbinConfig) {
scriptEngine.put("all", true)
scriptEngine.put("none", false)
scriptEngine.put("threadName", Thread.currentThread().getName())
scriptEngine.put("bobbin", this)
this.bobbinConfig = bobbinConfig
bobbinConfig.destinations.each {
Destination destination = Class.forName(it.name).newInstance() as Destination
destination.setConfigs(it, bobbinConfig)
Destination destination = Class.forName(it.name).newInstance(
it,
bobbinConfig,
scriptEngine
) as Destination
destinations.add(destination)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package io.infinite.bobbin.destinations

import io.infinite.bobbin.BobbinConfig
import io.infinite.bobbin.Event

import javax.script.ScriptEngine

class ConsoleDestination extends Destination {

ConsoleDestination(BobbinConfig.Destination destinationConfig, BobbinConfig parentBobbinConfig, ScriptEngine scriptEngine) {
super(destinationConfig, parentBobbinConfig, scriptEngine)
}

@Override
protected void store(Event event) {
System.out.print(event.getFormattedMessage())
Expand Down
28 changes: 7 additions & 21 deletions src/main/groovy/io/infinite/bobbin/destinations/Destination.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import io.infinite.bobbin.Event
import io.infinite.bobbin.Level

import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
import java.text.SimpleDateFormat

abstract class Destination {
Expand All @@ -15,17 +14,15 @@ abstract class Destination {

BobbinConfig parentBobbinConfig

ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("groovy")
ScriptEngine scriptEngine

final void log(Event event) {
scriptEngine.put("event", event)
scriptEngine.put("threadName", Thread.currentThread().getName())
scriptEngine.put("date", new SimpleDateFormat(destinationConfig.dateFormat).format(event.getDate()))
scriptEngine.put("dateTime", new SimpleDateFormat(destinationConfig.dateTimeFormat).format(event.getDate()))
scriptEngine.put("level", event.getLevel().value())
scriptEngine.put("className", event.getClassName())
scriptEngine.put("all", true)
if (!isLevelAndClassEnabled(event.getLevel(), event.getClassName())) {
if (!needsLogging(event.getLevel(), event.getClassName())) {
return
}
formatMessage(event)
Expand All @@ -35,31 +32,20 @@ abstract class Destination {
abstract protected void store(Event event)

@Memoized(maxCacheSize = 128)
final Boolean isLevelAndClassEnabled(Level level, String className) {
return isLevelEnabled(level) && isClassEnabled(className)
}

@Memoized
final Boolean isLevelEnabled(Level level) {
scriptEngine.put("level", level.value())
scriptEngine.put("all", true)
return scriptEngine.eval(destinationConfig.levels ?: parentBobbinConfig.levels)
}

@Memoized(maxCacheSize = 128)
final Boolean isClassEnabled(String className) {
scriptEngine.put("className", className)
return scriptEngine.eval(destinationConfig.classes ?: parentBobbinConfig.classes)
final Boolean needsLogging(Level level, String className) {
return (scriptEngine.eval(destinationConfig.classes ?: parentBobbinConfig.classes)
&& scriptEngine.eval(destinationConfig.levels ?: parentBobbinConfig.levels))
}

final Event formatMessage(Event event) {
event.setFormattedMessage(scriptEngine.eval(destinationConfig.format) as String)
return event
}

final void setConfigs(BobbinConfig.Destination destinationConfig, BobbinConfig parentBobbinConfig) {
Destination(BobbinConfig.Destination destinationConfig, BobbinConfig parentBobbinConfig, ScriptEngine scriptEngine) {
this.destinationConfig = destinationConfig
this.parentBobbinConfig = parentBobbinConfig
this.scriptEngine = scriptEngine
}

}
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package io.infinite.bobbin.destinations

import io.infinite.bobbin.BobbinConfig
import io.infinite.bobbin.Event

import javax.script.ScriptEngine
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream

class FileDestination extends Destination {

static Map<String, File> fileMap = new HashMap<>()

FileDestination(BobbinConfig.Destination destinationConfig, BobbinConfig parentBobbinConfig, ScriptEngine scriptEngine) {
super(destinationConfig, parentBobbinConfig, scriptEngine)
}

String prepareKey() {
return scriptEngine.eval(destinationConfig.properties.get("fileKey") ?: "\"default\"")
}
Expand Down

0 comments on commit 59b9a60

Please sign in to comment.