Logging

library(ptspotter)
#> Loading required package: this.path
#> Loading required package: log4r
#> 
#> Attaching package: 'log4r'
#> The following object is masked from 'package:base':
#> 
#>     debug
#> Loading required package: beepr
#> Registered S3 method overwritten by 'pryr':
#>   method      from
#>   print.bytes Rcpp

Logging with ‘log4r’

Logging is an excellent way to monitor the status of your data pipelines. Please consult the ‘log4r’ documentation for a comprehensive guide to its features.

Logging File Operations

In order to quickly get up and running with ‘log4r’, there are a few steps to take first. A directory and a logfile are required.

log_file_ops(dir_path = "logs", logfile_nm = "logfile")
#> Logging directory successfully created at 'logs/'
#> Logfile successfully created at 'logs/logfile.txt'

list.files("logs")
#> [1] "logfile.txt"

This will only need to be executed once. Running this line again will throw an error.

log_file_ops(dir_path = "logs", logfile_nm = "logfile")
#> Error in log_file_ops(dir_path = "logs", logfile_nm = "logfile"): Logfile with name matching logfile_nm found. Have you previously run
#>          `ptspotter::log_enable()`?

Logger Objects

Next we need to create the required objects within R to be able to write to the logfile we created. Namely, a file appender and logger objects are needed. This needs to be executed every time you run your programme, so include it within your script.

log_enable(logfile_loc = "logs/logfile.txt")
#> File appender successfully assigned to file_app
#> Logger object sucessfully assigned to my_logger

Start Logging

We can now use the logging functions in ‘log4r’ to begin writing messages to the logfile.

log4r::info(logger = my_logger, message = "Some info")
log4r::warn(logger = my_logger, message = "Some warning")
log4r::error(logger = my_logger, message = "Some error")

# Check the messages are being logged
readLines("logs/logfile.txt")
#> [1] "INFO  [2021-05-03 06:51:56] Some info"   
#> [2] "WARN  [2021-05-03 06:51:56] Some warning"
#> [3] "ERROR [2021-05-03 06:51:56] Some error"