# Using syslog - Seafile Admin Manual
Author: seafile

Skip to content

# Using syslog

## Configure Seafile to Use Syslog

Since community edition 5.1.2 and professional edition 5.1.4, Seafile support using Syslog.

### Configure Syslog for Seafile Controller and Server

Add following configuration to `general` section in `seafile.conf`:

    [general]
    enable_syslog = true

Restart seafile server, you will find follow logs in `/var/log/syslog`:

    May 10 23:45:19 ubuntu seafile-controller[16385]: seafile-controller.c(154): starting ccnet-server ...
    May 10 23:45:19 ubuntu seafile-controller[16385]: seafile-controller.c(73): spawn_process: ccnet-server -F /home/plt/haiwen/conf -c /home/plt/haiwen/ccnet -f /home/plt/haiwen/logs/ccnet.log -d -P /home/plt/haiwen/pids/ccnet.pid

    May 12 01:00:51 ubuntu seaf-server[21552]: ../common/mq-mgr.c(60): [mq client] mq cilent is started
    May 12 01:00:51 ubuntu seaf-server[21552]: ../common/mq-mgr.c(106): [mq mgr] publish to hearbeat mq: seaf_server.heartbeat

### Configure Syslog For Seafevents (Professional Edition only)

Add following configuration to `seafevents.conf`:

    [Syslog]
    enabled = true

Restart seafile server, you will find follow logs in `/var/log/syslog`

    May 12 01:00:52 ubuntu seafevents[21542]: [seafevents] database: mysql, name: seahub-pro
    May 12 01:00:52 ubuntu seafevents[21542]: seafes enabled: True
    May 12 01:00:52 ubuntu seafevents[21542]: seafes dir: /home/plt/pro-haiwen/seafile-pro-server-5.1.4/pro/python/seafes

### Configure Syslog For Seahub

Add following configurations to `seahub_settings.py`:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'verbose': {
                'format': '%(process)-5d %(thread)d %(name)-50s %(levelname)-8s %(message)s'
            },
            'standard': {
                'format': '%(asctime)s [%(levelname)s] %(name)s:%(lineno)s %(funcName)s %(message)s'
            },
            'simple': {
                'format': '[%(asctime)s] %(name)s %(levelname)s %(message)s',
                'datefmt': '%d/%b/%Y %H:%M:%S'
            },
        },
        'filters': {
            'require_debug_false': {
                '()': 'django.utils.log.RequireDebugFalse',
            },
            'require_debug_true': {
                '()': 'django.utils.log.RequireDebugTrue',
            },
        },
        'handlers': {
            'console': {
                'filters': ['require_debug_true'],
                'class': 'logging.StreamHandler',
                'formatter': 'simple'
            },
            'syslog': {
                'class': 'logging.handlers.SysLogHandler',
                'address': '/dev/log',
                'formatter': 'standard'
            },
        },
        'loggers': {
            # root logger
            # All logs printed by Seahub and any third party libraries will be handled by this logger.
            '': {
                'handlers': ['console', 'syslog'],
                'level': 'INFO', # Logs when log level is higher than info. Level can be any one of DEBUG, INFO, WARNING, ERROR, CRITICAL.
                'disabled': False
            },
            # This logger recorded logs printed by Django Framework. For example, when you see 5xx page error, you should check the logs recorded by this logger.
            'django.request': {
                'handlers': ['console', 'syslog'],
                'level': 'INFO',
                'propagate': False,
            },
        },
    }