From 06a634343a7b92685e4afcf87ea0e5ffdfe95c07 Mon Sep 17 00:00:00 2001 From: Francisco Solis Date: Tue, 21 Dec 2021 16:55:40 -0300 Subject: [PATCH 1/3] Added LogFilter --- CHANGELOG.md | 3 ++ build.gradle | 19 +++---- .../loggingmodule/filter/FilterResult.kt | 8 +++ .../loggingmodule/filter/LogFilter.kt | 50 +++++++++++++++++++ 4 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/FilterResult.kt create mode 100644 src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/LogFilter.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc673f..ca1fb2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,5 @@ +## v0.2.0 - Snapshot +* Added Log Filter + ## v0.1.0 - Snapshot Hello, World! \ No newline at end of file diff --git a/build.gradle b/build.gradle index 38121a2..52d8b90 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'org.jetbrains.dokka' version '1.6.0' } -def projectVersion = (System.getenv("VERSION") ?: '0.1.0-SNAPSHOT').replaceFirst("v", "").replace('/', '') +def projectVersion = (System.getenv("VERSION") ?: '0.2.0-SNAPSHOT').replaceFirst("v", "").replace('/', '') group 'xyz.theprogramsrc' version projectVersion @@ -16,11 +16,15 @@ description 'Just a logger for the SimpleCore API' repositories { mavenLocal() mavenCentral() + maven { url 'https://repo.theprogramsrc.xyz/repository/maven-public/' } - maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } maven { url 'https://oss.sonatype.org/content/repositories/releases/' } maven { url 'https://oss.sonatype.org/content/groups/public/' } + maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } + maven { url 'https://repo.codemc.org/repository/maven-public' } + maven { url 'https://repo.codemc.org/repository/nms' } + maven { url 'https://jitpack.io' } } dependencies { @@ -29,6 +33,9 @@ dependencies { compileOnly 'net.md-5:bungeecord-api:1.17-R0.1-SNAPSHOT' compileOnly 'xyz.theprogramsrc:simplecoreapi:0.1.8-SNAPSHOT' + compileOnly 'org.apache.logging.log4j:log4j-api:2.17.0' + compileOnly 'org.apache.logging.log4j:log4j-core:2.17.0' + testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' } @@ -67,10 +74,6 @@ tasks.withType(Jar) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } -test { - useJUnitPlatform() -} - configurations { testImplementation { extendsFrom(compileOnly) @@ -102,9 +105,7 @@ publishing { pom.withXml { asNode().appendNode('packaging', 'jar') - if(asNode().get('dependencies')[0] != null){ - asNode().remove(asNode().get('dependencies')[0]) - } + asNode().remove(asNode().get('dependencies')[0]) } } } diff --git a/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/FilterResult.kt b/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/FilterResult.kt new file mode 100644 index 0000000..235d828 --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/FilterResult.kt @@ -0,0 +1,8 @@ +package xyz.theprogramsrc.loggingmodule.filter + +@Suppress("unused") +enum class FilterResult { + DENY, + NEUTRAL, + NONE, +} \ No newline at end of file diff --git a/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/LogFilter.kt b/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/LogFilter.kt new file mode 100644 index 0000000..2f5c715 --- /dev/null +++ b/src/main/kotlin/xyz/theprogramsrc/loggingmodule/filter/LogFilter.kt @@ -0,0 +1,50 @@ +package xyz.theprogramsrc.loggingmodule.filter + +import org.apache.logging.log4j.Level +import org.apache.logging.log4j.LogManager +import org.apache.logging.log4j.Marker +import org.apache.logging.log4j.core.Filter +import org.apache.logging.log4j.core.LogEvent +import org.apache.logging.log4j.core.Logger +import org.apache.logging.log4j.core.filter.AbstractFilter +import org.apache.logging.log4j.message.Message + +/** + * Representation of a LogFilter + * @param result The result to use if the filter matches + * @param filteredStrings The strings that a message must contain to be filtered + */ +open class LogFilter(val result: FilterResult = FilterResult.NEUTRAL, val filteredStrings: Array): AbstractFilter() { + + /** + * Extra requirements for a string filter to be matched + */ + open val extraRequirements = emptyArray() + + private fun process(message: String?): Filter.Result { + if(message != null){ + if(filteredStrings.any { message.lowercase().contains(it.lowercase()) } && extraRequirements.any { message.lowercase().contains(it.lowercase()) }){ + return Filter.Result.valueOf(result.name) + } + } + + return Filter.Result.NEUTRAL + } + + /** + * Registers this log filter to work with the root logger. + */ + fun register() { + val logger = LogManager.getRootLogger() as Logger + logger.addFilter(this) + } + + override fun filter(event: LogEvent?): Filter.Result = process(event?.message?.formattedMessage) + + override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: Message, t: Throwable?): Filter.Result = process(msg.formattedMessage) + + override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: Any, t: Throwable?): Filter.Result = process(msg.toString()) + + override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: String?, vararg params: Any?): Filter.Result = process(msg) + +} From ac12aca339b3ff0ab70422281c4103d59fa99758 Mon Sep 17 00:00:00 2001 From: Francisco Solis Date: Tue, 21 Dec 2021 17:01:34 -0300 Subject: [PATCH 2/3] Fixed build script --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 52d8b90..dcbb931 100644 --- a/build.gradle +++ b/build.gradle @@ -105,7 +105,9 @@ publishing { pom.withXml { asNode().appendNode('packaging', 'jar') - asNode().remove(asNode().get('dependencies')[0]) + if(asNode().get('dependencies') != null){ + asNode().remove(asNode().get('dependencies')[0]) + } } } } From c4fa999b38e6aca6f3c3d15c64797993befd0acc Mon Sep 17 00:00:00 2001 From: Francisco Solis Date: Tue, 21 Dec 2021 17:03:33 -0300 Subject: [PATCH 3/3] Yet another fix for the build script --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dcbb931..c770741 100644 --- a/build.gradle +++ b/build.gradle @@ -105,7 +105,7 @@ publishing { pom.withXml { asNode().appendNode('packaging', 'jar') - if(asNode().get('dependencies') != null){ + if(asNode().get('dependencies')[0] != null){ asNode().remove(asNode().get('dependencies')[0]) } }