Files
2026-07-06 19:25:38 +02:00

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, ...)