Skip to content

Instantly share code, notes, and snippets.

@AzureKitsune
Created July 26, 2011 14:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AzureKitsune/1106939 to your computer and use it in GitHub Desktop.
Save AzureKitsune/1106939 to your computer and use it in GitHub Desktop.
A Logger for Nimrod
import events
import streams
import os
import times
type
TFormatEnum* = enum
file = 1, socket = 2, other = 3
TLogger = object of TObject
LoggerInitalized*: TEventHandler
DebugLogged*: TEventHandler
InfoLogged*: TEventHandler
WarnLogged*: TEventHandler
ErrorLogged*: TEventHandler
FatalLogged*: TEventHandler
Format: TFormatEnum
TFileLogger = object of TLogger
Filename*: string
File*: TFile
IsOpen*: bool
var
Logger*: var TLogger
proc defaultFilename*(): string =
## returns the default filename for a logger
var (path, name, ext) = splitFile(getAppFilename())
result = changeFileExt(path / name & "_" & getDateStr(), "log")
proc initLogger*(format: TFormatEnum) =
case format
of file:
var Logger: TFileLogger
Logger.Format = format
Logger.Filename = defaultFilename()
Logger.IsOpen = Open(
Logger.File, Logger.Filename)
else: return
proc setFile*(logger: var TFileLogger, filename: string) =
var logger = TFileLogger(Logger)
logger.IsOpen = Open(logger.file, filename)
if logger.IsOpen:
logger.Filename = filename
when ismainModule:
initLogger(TFormatEnum.file) #1 is file
setFile(Logger,defaultFilename())
echo($(file.IsOpen == true))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment