refactor: added standard nim logging library
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
import asyncdispatch, strformat, logging
|
||||
import asyncdispatch, strformat, logging, terminal, times, strutils
|
||||
from net import Port
|
||||
from htmlgen import a
|
||||
from os import getEnv
|
||||
@@ -15,6 +15,33 @@ import routes/[
|
||||
const instancesUrl = "https://github.com/zedeus/nitter/wiki/Instances"
|
||||
const issuesUrl = "https://github.com/zedeus/nitter/issues"
|
||||
|
||||
type ColoredLogger = ref object of Logger
|
||||
|
||||
method log(logger: ColoredLogger, level: Level, args: varargs[string, `$`]) =
|
||||
if level < logger.levelThreshold: return
|
||||
|
||||
let color = case level
|
||||
of lvlFatal, lvlError: fgRed
|
||||
of lvlWarn: fgYellow
|
||||
of lvlInfo: fgGreen
|
||||
of lvlDebug: fgCyan
|
||||
else: fgWhite
|
||||
|
||||
let levelStr = case level
|
||||
of lvlFatal: "fatal"
|
||||
of lvlError: "error"
|
||||
of lvlWarn: "warn"
|
||||
of lvlInfo: "info"
|
||||
of lvlDebug: "debug"
|
||||
else: "other"
|
||||
|
||||
let timeStr = format(now(), "HH:mm:ss")
|
||||
stdout.styledWrite(fgWhite, "[", timeStr, "] ", color, levelStr, fgWhite, ": ")
|
||||
for arg in args:
|
||||
stdout.write(arg)
|
||||
stdout.write("\n")
|
||||
stdout.flushFile()
|
||||
|
||||
let
|
||||
configPath = getEnv("NITTER_CONF_FILE", "./nitter.conf")
|
||||
(cfg, fullCfg) = getConfig(configPath)
|
||||
@@ -23,13 +50,14 @@ let
|
||||
|
||||
initSessionPool(cfg, sessionsPath)
|
||||
|
||||
if not cfg.enableDebug:
|
||||
# Silence Jester's query warning
|
||||
addHandler(newConsoleLogger())
|
||||
setLogFilter(lvlError)
|
||||
addHandler(new(ColoredLogger))
|
||||
|
||||
stdout.write &"Starting Nitter at {getUrlPrefix(cfg)}\n"
|
||||
stdout.flushFile
|
||||
if cfg.enableDebug:
|
||||
setLogFilter(lvlDebug)
|
||||
else:
|
||||
setLogFilter(lvlInfo)
|
||||
|
||||
info &"Starting Nitter at {getUrlPrefix(cfg)}"
|
||||
|
||||
updateDefaultPrefs(fullCfg)
|
||||
setCacheTimes(cfg)
|
||||
@@ -40,8 +68,7 @@ setHttpProxy(cfg.proxy, cfg.proxyAuth)
|
||||
initAboutPage(cfg.staticDir)
|
||||
|
||||
waitFor initRedisPool(cfg)
|
||||
stdout.write &"Connected to Redis at {cfg.redisHost}:{cfg.redisPort}\n"
|
||||
stdout.flushFile
|
||||
info &"Connected to Redis at {cfg.redisHost}:{cfg.redisPort}"
|
||||
|
||||
createUnsupportedRouter(cfg)
|
||||
createResolverRouter(cfg)
|
||||
@@ -83,13 +110,13 @@ routes:
|
||||
resp Http404, showError("Page not found", cfg)
|
||||
|
||||
error InternalError:
|
||||
echo error.exc.name, ": ", error.exc.msg
|
||||
error error.exc.name, ": ", error.exc.msg
|
||||
const link = a("open a GitHub issue", href = issuesUrl)
|
||||
resp Http500, showError(
|
||||
&"An error occurred, please {link} with the URL you tried to visit.", cfg)
|
||||
|
||||
error BadClientError:
|
||||
echo error.exc.name, ": ", error.exc.msg
|
||||
error error.exc.name, ": ", error.exc.msg
|
||||
resp Http500, showError("Network error occurred, please try again.", cfg)
|
||||
|
||||
error RateLimitError:
|
||||
|
||||
Reference in New Issue
Block a user