37 lines
1.2 KiB
R
37 lines
1.2 KiB
R
.log_env <- new.env(parent = emptyenv())
|
|
.log_env$file <- NULL
|
|
|
|
log_init <- function() {
|
|
log_dir <- Sys.getenv("LOG_DIR", "/logs")
|
|
if (!dir.exists(log_dir))
|
|
dir.create(log_dir, recursive = TRUE, showWarnings = FALSE)
|
|
fname <- paste0(format(Sys.Date(), "%Y-%m-%d"), "_log.jsonl")
|
|
.log_env$file <- file.path(log_dir, fname)
|
|
|
|
v <- tryCatch(
|
|
as.character(utils::packageVersion("listkeeper")),
|
|
error = function(e) "unknown"
|
|
)
|
|
.log_write("INFO", "startup",
|
|
version = v,
|
|
r_version = paste(R.version$major, R.version$minor, sep = "."),
|
|
platform = R.version$platform,
|
|
api_url = Sys.getenv("API_URL", "http://localhost:8000")
|
|
)
|
|
}
|
|
|
|
.log_write <- function(level, msg, ...) {
|
|
if (is.null(.log_env$file)) return(invisible(NULL))
|
|
entry <- c(
|
|
list(ts = format(Sys.time(), "%Y-%m-%dT%H:%M:%OS3"), level = level, msg = msg),
|
|
list(...)
|
|
)
|
|
line <- jsonlite::toJSON(entry, auto_unbox = TRUE)
|
|
cat(line, "\n", file = .log_env$file, append = TRUE, sep = "")
|
|
invisible(NULL)
|
|
}
|
|
|
|
log_info <- function(msg, ...) .log_write("INFO", msg, ...)
|
|
log_debug <- function(msg, ...) .log_write("DEBUG", msg, ...)
|
|
log_error <- function(msg, ...) .log_write("ERROR", msg, ...)
|