logger :: FileLogger :: defaultinit
# Log messages to a file
#
# ~~~
# var log_file = "my_file.log"
# var logger = new FileLogger(warn_level, log_file, append = false)
# logger.error("An error")
# logger.info("Some info")
# logger.close
# assert log_file.to_path.read_all == "An error\n"
#
# logger = new FileLogger(warn_level, log_file, append = true)
# logger.error("Another error")
# logger.close
# assert log_file.to_path.read_all == "An error\nAnother error\n"
#
# log_file.to_path.delete
# ~~~
class FileLogger
super Logger
autoinit level, file, append, default_formatter
redef type OUT: FileWriter
# File where messages will be written
var file: String
# Append messages to `file`
#
# If `append` is `false`, the `file` will be overwritten.
var append: Bool = true is optional
init do
var old = null
if append then
old = file.to_path.read_all
end
out = new FileWriter.open(file)
out.set_buffering_mode(0, buffer_mode_line)
if old != null then
out.write(old)
end
end
# Close the logger and its `file`
fun close do out.close
end
lib/logger/logger.nit:264,1--309,3