Skip to content

Commit 0ed9fc1

Browse files
author
Francisco Solis
authored
Merge pull request #2 from TheProgramSrc/feat/log_filter
Added LogFilter
2 parents 1b7253b + c4fa999 commit 0ed9fc1

File tree

4 files changed

+70
-6
lines changed

4 files changed

+70
-6
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
## v0.2.0 - Snapshot
2+
* Added Log Filter
3+
14
## v0.1.0 - Snapshot
25
Hello, World!

build.gradle

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
id 'org.jetbrains.dokka' version '1.6.0'
88
}
99

10-
def projectVersion = (System.getenv("VERSION") ?: '0.1.0-SNAPSHOT').replaceFirst("v", "").replace('/', '')
10+
def projectVersion = (System.getenv("VERSION") ?: '0.2.0-SNAPSHOT').replaceFirst("v", "").replace('/', '')
1111

1212
group 'xyz.theprogramsrc'
1313
version projectVersion
@@ -16,11 +16,15 @@ description 'Just a logger for the SimpleCore API'
1616
repositories {
1717
mavenLocal()
1818
mavenCentral()
19+
1920
maven { url 'https://repo.theprogramsrc.xyz/repository/maven-public/' }
20-
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
2121
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
2222
maven { url 'https://oss.sonatype.org/content/repositories/releases/' }
2323
maven { url 'https://oss.sonatype.org/content/groups/public/' }
24+
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
25+
maven { url 'https://repo.codemc.org/repository/maven-public' }
26+
maven { url 'https://repo.codemc.org/repository/nms' }
27+
maven { url 'https://jitpack.io' }
2428
}
2529

2630
dependencies {
@@ -29,6 +33,9 @@ dependencies {
2933
compileOnly 'net.md-5:bungeecord-api:1.17-R0.1-SNAPSHOT'
3034
compileOnly 'xyz.theprogramsrc:simplecoreapi:0.1.8-SNAPSHOT'
3135

36+
compileOnly 'org.apache.logging.log4j:log4j-api:2.17.0'
37+
compileOnly 'org.apache.logging.log4j:log4j-core:2.17.0'
38+
3239
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
3340
}
3441

@@ -67,10 +74,6 @@ tasks.withType(Jar) {
6774
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
6875
}
6976

70-
test {
71-
useJUnitPlatform()
72-
}
73-
7477
configurations {
7578
testImplementation {
7679
extendsFrom(compileOnly)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package xyz.theprogramsrc.loggingmodule.filter
2+
3+
@Suppress("unused")
4+
enum class FilterResult {
5+
DENY,
6+
NEUTRAL,
7+
NONE,
8+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package xyz.theprogramsrc.loggingmodule.filter
2+
3+
import org.apache.logging.log4j.Level
4+
import org.apache.logging.log4j.LogManager
5+
import org.apache.logging.log4j.Marker
6+
import org.apache.logging.log4j.core.Filter
7+
import org.apache.logging.log4j.core.LogEvent
8+
import org.apache.logging.log4j.core.Logger
9+
import org.apache.logging.log4j.core.filter.AbstractFilter
10+
import org.apache.logging.log4j.message.Message
11+
12+
/**
13+
* Representation of a LogFilter
14+
* @param result The result to use if the filter matches
15+
* @param filteredStrings The strings that a message must contain to be filtered
16+
*/
17+
open class LogFilter(val result: FilterResult = FilterResult.NEUTRAL, val filteredStrings: Array<String>): AbstractFilter() {
18+
19+
/**
20+
* Extra requirements for a string filter to be matched
21+
*/
22+
open val extraRequirements = emptyArray<String>()
23+
24+
private fun process(message: String?): Filter.Result {
25+
if(message != null){
26+
if(filteredStrings.any { message.lowercase().contains(it.lowercase()) } && extraRequirements.any { message.lowercase().contains(it.lowercase()) }){
27+
return Filter.Result.valueOf(result.name)
28+
}
29+
}
30+
31+
return Filter.Result.NEUTRAL
32+
}
33+
34+
/**
35+
* Registers this log filter to work with the root logger.
36+
*/
37+
fun register() {
38+
val logger = LogManager.getRootLogger() as Logger
39+
logger.addFilter(this)
40+
}
41+
42+
override fun filter(event: LogEvent?): Filter.Result = process(event?.message?.formattedMessage)
43+
44+
override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: Message, t: Throwable?): Filter.Result = process(msg.formattedMessage)
45+
46+
override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: Any, t: Throwable?): Filter.Result = process(msg.toString())
47+
48+
override fun filter(logger: Logger?, level: Level?, marker: Marker?, msg: String?, vararg params: Any?): Filter.Result = process(msg)
49+
50+
}

0 commit comments

Comments
 (0)