commit 22/01/2026

This commit is contained in:
2026-01-22 13:57:34 +07:00
parent 34cf8c97df
commit ffd41ee225
10 changed files with 163 additions and 72 deletions

59
src/Log/LogGetter.kt Normal file
View File

@@ -0,0 +1,59 @@
package Log
import org.tinylog.Logger
import java.nio.file.Files
import java.nio.file.Paths
/**
* Class to get log data from log files
*/
@Suppress("UNUSED")
class LogGetter {
// valid date format either dd-MM-yyyy or dd/MM/yyyy
private val dateRegex = """(\d{2})[-/](\d{2})[-/](\d{4})""".toRegex()
// each logline is in format dd/MM/yyyy HH:mm:ss Function: Message
private val logLineRegex = """(\d{2}/\d{2}/\d{4}) (\d{2}:\d{2}:\d{2}) (.+?): (.+)""".toRegex()
// log folder is current working directory + /logs
private val logFolder: String = System.getProperty("user.dir") + "/logs"
/**
* Get log data for a specific date
* @param date Date in format dd-MM-yyyy or dd/MM/yyyy
* @return List of LogData for the specified date or empty list if date is invalid or no logs found
*/
fun getLog(date: String) : ArrayList<LogData> {
// check date with dateRegex and find dd MM yyyy
val x = dateRegex.find(date)
if (x==null) {
Logger.error { "Invalid date format: $date" }
return arrayListOf()
}
val (day, month, year) = x.destructured
// logFilePath is logFolder/year/month/day.log
val p = Paths.get(logFolder, year, month, "${day}.log")
// check if file exists
if (!Files.exists(p)) {
Logger.error { "Log file does not exist: $p" }
return arrayListOf()
}
val logDataList = ArrayList<LogData>()
Files.newBufferedReader(p).useLines { lines ->
lines.forEachIndexed { index, string ->
val ll = logLineRegex.find(string)
if (ll != null && ll.groupValues.size == 5) {
val logData = LogData(
index ,
ll.groupValues[1],
ll.groupValues[2],
ll.groupValues[3],
ll.groupValues[4]
)
logDataList.add(logData)
}
}
}
return logDataList
}
}