class Logit::Backend::File

Overview

Backend that writes log events to a file.

Uses the Formatter::JSON formatter by default, which produces structured JSON output suitable for log aggregation and analysis systems.

Basic Usage

Logit.configure do |config|
  config.file("logs/app.log", level: Logit::LogLevel::Debug)
end

Security Features

Custom Configuration

backend = Logit::Backend::File.new(
  path: "logs/audit.log",
  name: "audit",
  level: Logit::LogLevel::Info,
  formatter: Logit::Formatter::Human.new,
  mode: 0o644,           # World-readable
  follow_symlinks: true  # Allow symlinks
)

Output Example (JSON formatter)

{"trace_id":"abc...","span_id":"def...","name":"find_user","level":"info",...}

Included Modules

Defined in:

logit/backends/file.cr

Constant Summary

DEFAULT_FILE_MODE = 384

Default file permission mode (owner read/write only).

Constructors

Instance Method Summary

Instance methods inherited from module Logit::BufferedIO

buffer_size=(size : Int32) : Nil buffer_size=, buffered=(value : Bool) : Nil buffered=

Instance methods inherited from class Logit::Backend

bind(pattern : String, level : LogLevel) : Nil bind, bindings : Array(NamespaceBinding) bindings, bindings=(bindings : Array(NamespaceBinding)) bindings=, close : Nil close, flush : Nil flush, formatter : Formatter | Nil formatter, formatter=(formatter : Formatter | Nil) formatter=, level : LogLevel level, level=(level : LogLevel) level=, log(event : Event) : Nil log, name : String name, name=(name : String) name=, should_log?(event : Event) : Bool should_log?, should_log_level?(level : LogLevel, namespace : String) : Bool should_log_level?

Constructor methods inherited from class Logit::Backend

new(name : String, level : Logit::LogLevel = LogLevel::Info, formatter : Logit::Formatter | Nil = nil) new

Constructor Detail

def self.new(path : String, name = "file", level = LogLevel::Info, formatter : Formatter | Nil = Formatter::JSON.new, mode : Int32 = DEFAULT_FILE_MODE, follow_symlinks : Bool = false) #

Creates a new file backend.

  • path: Path to the log file (will be created if it doesn't exist)
  • name: Backend name for identification (default: "file")
  • level: Minimum log level (default: Info)
  • formatter: Output formatter (default: JSON)
  • mode: File permission mode for new files (default: 0o600)
  • follow_symlinks: Whether to allow symlink paths (default: false)

Raises InvalidPathError if the path is invalid or cannot be opened. Raises SymlinkError if the path is a symlink and follow_symlinks is false.


[View source]

Instance Method Detail

def close : Nil #

Closes the file handle, flushing any remaining buffered data.


[View source]
def flush : Nil #

Flushes the output buffer to disk.


[View source]
def log(event : Event) : Nil #

Logs an event to the file.


[View source]