## ProFTPD Logging: Log Levels

Log Levels As mentioned in the logging documentation, log messages are logged at different log levels (also known as log priorities), and with different facilities (i.e. the component generating the log message).

The following table lists the supported log levels, in descending priority order. Thus the `DEBUG` level has the lowest priority, and the `EMERG` level has the highest priority.

Level | Description
`EMERG` | Fatal/unrecoverable error/condition, application is unusable and stops immediately
`ALERT` | Condition requires immediate intervention by administrator/operator
`CRIT` | Condition should be corrected immediately, but indicates e.g. failure in secondary system/library
`ERR` | Non-urgent failure conditions that should be relayed to developers and/or administrators; should be resolved/corrected soon
`WARNING` | Unexpected error/condition that may require intervention to review/correct
`NOTICE` | Significant/noteworthy condition, no intervention/action required
`INFO` | Normal operating conditions, no intervention/action required
`DEBUG` | Internal details of application operations useful to developers, not necessarily useful during normal operations

The `proftpd` daemon can use any or all of the above log levels for its emitted log messages, depending on the situation. You might find that you only want `proftpd` to log messages above a certain level; for example, you might not be interested in `INFO` and `DEBUG` level messages. ProFTPD logs all levels by default. To tell `proftpd` to silently ignore all log messages below a certain level, use the `SyslogLevel` directive. Thus to ignore `INFO`/`DEBUG` messages, you would use:

      SyslogLevel notice

Note that additional log filtering is also done by the `syslogd` daemon, to which `proftpd` logs by default. You will need to consult your `syslogd` configuration (typically found in `/etc/syslog.conf`) to see whether it is capturing log messages from the facility used by `proftpd` (default is "daemon"), and whether it is filtering out messages below a certain level/priority.

If you need to tell `proftpd` to use a different facility, so that it matches your `/etc/syslog.conf` settings for example, you can use the `SyslogFacility` directive like so:

      # Tell proftpd to log using the "ftp" facility, rather than "daemon"
      SyslogFacility ftp

The `DEBUG` Level
ProFTPD treats the `DEBUG` log level a little differently. There are so many conditions which are relevant only when triaging a specific issue (such as figuring out why a user cannot log in, or why a file cannot be uploaded) that the `DEBUG` level would become cluttered. Additional filtering of these debug messages is needed. Thus ProFTPD imposes its own notion of debug levels within the `DEBUG` logging level/priority.

The `DebugLevel` directive is used to control the granularity/verbosity of the `DEBUG` level messages; the default level is 0, and goes to 10 (inclusive). In general, the higher the `DebugLevel`, the more debug messages will be emitted by `proftpd` to the `DEBUG` logging level/priority.

Additional Logging
Note that ProFTPD also supports even finer-grained logging of internals via its trace logging. Trace logging, however, is completely unrelated to `syslogd`, and thus the syslog facility and level concepts/filtering do not apply to trace logging.

© Copyright 2013-2019 The ProFTPD Project
All Rights Reserved