Security Advisories (10)
CPANSA-Mojolicious-2022-03 (2022-12-10)

Mojo::DOM did not correctly parse <script> tags.

CPANSA-Mojolicious-2021-02 (2021-06-01)

Small sessions could be used as part of a brute-force attack to decode the session secret.

CVE-2021-47208 (2021-03-16)

A bug in format detection can potentially be exploited for a DoS attack.

CVE-2018-25100 (2018-02-13)

Mojo::UserAgent::CookieJar leaks old cookies because of the missing host_only flag on empty domain.

CPANSA-Mojolicious-2015-01 (2015-02-02)

Directory traversal on Windows

CPANSA-Mojolicious-2018-03 (2018-05-19)

Mojo::UserAgent was not checking peer SSL certificates by default.

CVE-2020-36829 (2020-11-10)

Mojo::Util secure_compare can leak the string length. By immediately returning when the two strings are not the same length, the function allows an attacker to guess the length of the secret string using timing attacks.

CPANSA-Mojolicious-2018-02 (2018-05-11)

GET requests with embedded backslashes can be used to access local files on Windows hosts

CPANSA-Mojolicious-2014-01 (2014-10-07)

Context sensitivity of method param could lead to parameter injection attacks.

CVE-2024-58134 (2025-05-03)

Mojolicious versions from 0.999922 for Perl uses a hard coded string, or the application's class name, as a HMAC session secret by default. These predictable default secrets can be exploited to forge session cookies. An attacker who knows or guesses the secret could compute valid HMAC signatures for the session cookie, allowing them to tamper with or hijack another user's session.

NAME

Mojo::Log - Simple logger for Mojo

SYNOPSIS

use Mojo::Log;

# Create a logging object that will log to STDERR by default
my $log = Mojo::Log->new;

# Customize the log location and minimum log level
my $log = Mojo::Log->new(
  path  => '/var/log/mojo.log',
  level => 'warn',
);

# Log messages
$log->debug("Why isn't this working?");
$log->info("FYI: it happened again");
$log->warn("This might be a problem");
$log->error("Garden variety error");
$log->fatal("Boom!");

DESCRIPTION

Mojo::Log is a simple logger for Mojo projects.

EVENTS

Mojo::Log can emit the following events.

message

$log->on(message => sub {
  my ($log, $level, @messages) = @_;
});

Emitted when a new message gets logged. Note that this event is EXPERIMENTAL and might change without warning!

$log->unsubscribe('message');
$log->on(message => sub {
  my ($log, $level, @messages) = @_;
  say "$level: ", @messages;
});

ATTRIBUTES

Mojo::Log implements the following attributes.

handle

my $handle = $log->handle;
$log       = $log->handle(IO::File->new);

Logfile handle used by default message event, defaults to opening the value of path or STDERR.

level

my $level = $log->level;
$log      = $log->level('debug');

Active log level, defaults to debug.

These levels are currently available:

debug
info
warn
error
fatal

path

my $path = $log->path
$log     = $log->path('/var/log/mojo.log');

Logfile path used by handle.

METHODS

Mojo::Log inherits all methods from Mojo::EventEmitter and implements the following new ones.

new

my $log = Mojo::Log->new;

Construct a new Mojo::Log object and register default message event.

debug

$log = $log->debug('You screwed up, but that is ok');

Log debug message.

error

$log = $log->error('You really screwed up this time');

Log error message.

fatal

$log = $log->fatal('Its over...');

Log fatal message.

format

my $message = $log->format('debug', 'Hi there!');
my $message = $log->format('debug', 'Hi', 'there!');

Format log message.

info

$log = $log->info('You are bad, but you prolly know already');

Log info message.

is_level

my $success = $log->is_level('debug');

Check log level.

is_debug

my $success = $log->is_debug;

Check for debug log level.

is_error

my $success = $log->is_error;

Check for error log level.

is_fatal

my $success = $log->is_fatal;

Check for fatal log level.

is_info

my $success = $log->is_info;

Check for info log level.

is_warn

my $success = $log->is_warn;

Check for warn log level.

log

$log = $log->log(debug => 'This should work');

Emit message event.

warn

$log = $log->warn('Dont do that Dave...');

Log warn message.

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicio.us.