Skip to content

Commit

Permalink
Re-Vamp Lumberjack
Browse files Browse the repository at this point in the history
  • Loading branch information
theAkito committed Dec 3, 2023
1 parent d982dbd commit 2af5370
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 36 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM nimlang/nim:2.0.0-alpine AS build

ARG nimble_task_build=docker_build_prod
ARG app_version=0.4.2
ARG app_version=0.5.0

WORKDIR /app

Expand All @@ -12,7 +12,7 @@ RUN \
nimble "${nimble_task_build}" "${app_version}"


FROM alpine:3.18.4
FROM alpine:3.18.5

COPY --from=build /app/app /

Expand Down
4 changes: 2 additions & 2 deletions debug.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM nimlang/nim:2.0.0-alpine AS build

ARG nimble_task_build=docker_build_debug
ARG app_version=0.4.2
ARG app_version=0.5.0

WORKDIR /app

Expand All @@ -12,7 +12,7 @@ RUN \
nimble "${nimble_task_build}" "${app_version}"


FROM alpine:3.18.4
FROM alpine:3.18.5

COPY --from=build /app/app /

Expand Down
3 changes: 2 additions & 1 deletion src/zoominvitr.nim
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import
configurator,
database,
mail,
timecode
timecode,
logg
],
zoominvitr/model/[
zoom,
Expand Down
1 change: 1 addition & 0 deletions src/zoominvitr/configurator.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import
meta,
identificator,
serialisor,
logg,
model/[
configuration
],
Expand Down
43 changes: 43 additions & 0 deletions src/zoominvitr/logg.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from meta import debug, appName
from logging import Level, ConsoleLogger, newConsoleLogger, RollingFileLogger, newRollingFileLogger

when NimMajor >= 2:
from std/os import createDir
from std/paths import `/`, Path
from std/files import fileExists
from model/logg import toLevel
else:
from std/os import `/`, fileExists, createDir


const
logMsgPrefix* {.strdefine.} = "[$levelname]:[$datetime]"
logMsgInter * {.strdefine.} = " ~ "
logMsgSuffix* {.strdefine.} = " -> "
logDirPath * {.strdefine.} = "logs"

when NimMajor >= 2:
const logLevelFlush* {.strdefine.} = "all"

func defineLogLevel(): Level =
if debug: lvlDebug else: lvlInfo

proc getLogger*(moduleName: string): ConsoleLogger =
when NimMajor >= 2:
newConsoleLogger(defineLogLevel(), logMsgPrefix & logMsgInter & moduleName & logMsgSuffix, flushThreshold = logLevelFlush.toLevel)
else:
newConsoleLogger(defineLogLevel(), logMsgPrefix & logMsgInter & moduleName & logMsgSuffix)

proc getFileLogger*(moduleName: string = appName): RollingFileLogger =
when NimMajor >= 2:
let logFilePath = string(logDirPath.Path / moduleName.Path) & ".log"
if not logFilePath.Path.fileExists:
logDirPath.createDir
logFilePath.writeFile("")
newRollingFileLogger(logFilePath, mode = fmReadWriteExisting, levelThreshold = defineLogLevel(), fmtStr = "", maxLines = 1000, flushThreshold = logLevelFlush.toLevel)
else:
let logFilePath = logDirPath / moduleName & ".log"
if not logFilePath.fileExists:
logDirPath.createDir
logFilePath.writeFile("")
newRollingFileLogger(logFilePath, mode = fmReadWriteExisting, levelThreshold = defineLogLevel(), fmtStr = "", maxLines = 1000)
33 changes: 5 additions & 28 deletions src/zoominvitr/meta.nim
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
from logging import Level, ConsoleLogger, newConsoleLogger, RollingFileLogger, newRollingFileLogger
from timestamp import initTimestamp, `$`

when NimMajor >= 2:
from std/os import DirSep
from std/paths import `/`, Path
from std/files import fileExists
else:
from std/os import DirSep, `/`, existsFile

const
debug * {.booldefine.} = false
debugMail * {.booldefine.} = false ## Whether debug messages should be echoed during SMTP connections.
Expand All @@ -21,11 +13,12 @@ const
logMsgSuffix * {.strdefine.} = " -> "
hostRedis * {.strdefine.} = "redis"
portRedis * {.intdefine.} = 6379
appVersion * {.strdefine.} = "0.4.2"
appName * {.strdefine.} = "zoominvitr"
appVersion * {.strdefine.} = "0.5.0"
appRevision * {.strdefine.} = appVersion
appDate * {.strdefine.} = appVersion
configNameJSON * {.strdefine.} = "zoominvitr.json"
configNameYAML * {.strdefine.} = "zoominvitr.yaml"
configNameJSON * {.strdefine.} = appName & ".json"
configNameYAML * {.strdefine.} = appName & ".yaml"
configPath * {.strdefine.} = ""
configIndentation * {.intdefine.} = 2
sourcepage * {.strdefine.} = "https://github.com/theAkito/zoominvitr"
Expand All @@ -39,20 +32,4 @@ template edit*(o, body: untyped): untyped =
block:
var it {.inject.} = `o`
`body`
it

func defineLogLevel*(): Level =
if debug: lvlDebug else: lvlInfo

proc getLogger*(moduleName: string): ConsoleLogger =
newConsoleLogger(defineLogLevel(), logMsgPrefix & logMsgInter & moduleName & logMsgSuffix)

proc getFileLogger*(moduleName: string): RollingFileLogger =
when NimMajor >= 2:
let filename = DirSep & cast[string](DirSep & string("logs".Path / moduleName.Path)) & ".log"
if not filename.Path.fileExists: filename.writeFile("")
newRollingFileLogger(filename, mode = fmReadWriteExisting, levelThreshold = defineLogLevel(), fmtStr = "", maxLines = 1000, flushThreshold = lvlAll)
else:
let filename = DirSep & "logs" / moduleName & ".log"
if not filename.existsFile: filename.writeFile("")
newRollingFileLogger(filename, mode = fmReadWriteExisting, levelThreshold = defineLogLevel(), fmtStr = "", maxLines = 1000)
it
6 changes: 4 additions & 2 deletions src/zoominvitr/model/database.nim
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import
../meta,
../identificator,
configuration,
../[
logg,
identificator
],
std/[
logging,
options
Expand Down
42 changes: 42 additions & 0 deletions src/zoominvitr/model/logg.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from json import `$`, `%`
from timestamp import initTimestamp, zulu
from logging import Level

type
LogMessage* = object
timestamp*: string ## From initTimestamp().zulu
level*: string ## lvlError, etc.
msg*: string ## Message content.
module*: string ## Module name.

func toString(level: Level): string =
case level
of lvlNone: "none"
of lvlFatal: "fatal"
of lvlError: "error"
of lvlWarn: "warn"
of lvlNotice: "notice"
of lvlInfo: "info"
of lvlDebug: "debug"
of lvlAll: "all"

when NimMajor >= 2:
func toLevel*(level: string): Level =
case level
of "none": lvlNone
of "fatal": lvlFatal
of "error": lvlError
of "warn": lvlWarn
of "notice": lvlNotice
of "info": lvlInfo
of "debug": lvlDebug
of "all": lvlAll
else: lvlAll

proc createLogMessage*(level: Level, msg: string, module: string): string =
$ %LogMessage(
timestamp: initTimestamp().zulu,
level: level.toString,
msg: msg,
module: module
)
2 changes: 1 addition & 1 deletion zoominvitr.nimble
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Package

version = "0.4.3"
version = "0.5.0"
author = "Akito <[email protected]>"
description = "Automatically send invitations about planned Zoom meetings."
license = "AGPL-3.0-or-later"
Expand Down

0 comments on commit 2af5370

Please sign in to comment.