---
name: "Catmandu::Fix::log"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Fix::log"
---

# Catmandu::Fix::log(3pm)

Log::Any logger as fix

## NAME

Catmandu::Fix::log - Log::Any logger as fix

## SYNOPSIS

```
  log('test123')
  log('hello world' , level:WARN)
```

## DESCRIPTION

This fix add debugging capabilities to fixes. To use it via the command line you need to add the '-D' option to your script. E.g.

```
  echo '{}' | catmandu convert -D to YAML --fix 'log("help!", level:WARN)'
```

By default all logging messages have a level:INFO and will not be displayed unless a log4perl configuration is in place (see below). Using log messages without a log4perl configuration requires a log level of 'WARN', 'ERROR' or 'FATAL'.

## CONFIGURATION

To have a full control over the log messages, create a 'catmandu.yml' with a 'log4perl' section as shown below:

```
    $ cat catmandu.yml
    log4perl: |
     log4perl.category.Catmandu::Fix::log=TRACE,OUT
     log4perl.appender.OUT=Log::Log4perl::Appender::Screen
     log4perl.appender.OUT.stderr=1
     log4perl.appender.OUT.utf8=1
     log4perl.appender.OUT.layout=PatternLayout
     log4perl.appender.OUT.layout.ConversionPattern=%d [%P] - %p %l time=%r : %m%n
```

Using this configuration file all logging messages are written to the screen (stderr output). With this configuration in place use the catmandu command with the -D option to view the logging output:

```
    $ echo '{}' | catmandu convert -D to YAML --fix 'log("help!")' > output.yaml 2> log.txt
```

The Unix redirections '\>' and '2\>' can be used to write the output of the catmandu command and the logging in two separate files.

## SEE ALSO

Catmandu::Fix, Catmandu::Logger , Log::log4perl
