{
    "mode": "man",
    "parameter": "COURIERLOGGER",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/man/COURIERLOGGER/json",
    "generated": "2026-10-22T12:39:59Z",
    "synopsis": "courierlogger [-name=title] [-facility=subsystem] [-pid=filename] [-user=user] [-group=group]\n[-droproot] [[[-respawn] [-start] program [argument...]] | [-stop] |\n[-restart]]",
    "sections": {
        "NAME": {
            "content": "courierlogger - Courier syslog wrapper\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "courierlogger [-name=title] [-facility=subsystem] [-pid=filename] [-user=user] [-group=group]\n[-droproot] [[[-respawn] [-start] program [argument...]] | [-stop] |\n[-restart]]\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "courierlogger is a wrapper that captures another process's error messages, and forwards them\nto the system logging facility, “syslog”.\n\nThere are two ways to use courierlogger:\n\n1. Use the shell to pipe another command's standard error, and/or its standard output, to\ncourierlogger's standard input.\n\n2. Alternatively, courierlogger itself can start another process, and arrange to have its\nstandard error captured.\n\nIn either case, each read line of text is sent as a syslog message.\n",
            "subsections": []
        },
        "OPTIONS": {
            "content": "-name=title\nUse title for sending messages to syslog.  title should be the application's name.\n\n-facility=subsystem\nUse subsystem for classifying messages. Your syslog facility uses subsystem to determine\nwhich log messages are recorded in which log files. The currently defined subsystems are:\n\n•   auth\n\n•   authpriv\n\n•   console\n\n•   cron\n\n•   daemon\n\n•   ftp\n\n•   kern\n\n•   lpr\n\n•   mail\n\n•   news\n\n•   security\n\n•   user\n\n•   uucp\n\n•   local0\n\n•   local1\n\n•   local2\n\n•   local3\n\n•   local4\n\n•   local5\n\n•   local6\n\n•   local7\n\n\nNote\nNot all of the above facility names are implemented on every system. Check your\nsystem's syslog documentation for information on which facility names are allowed,\nand which log files record the corresponding messages for each facility.\n\n-pid=filename\nSave courierlogger's process ID in filename. The -pid option is required when -start,\n-stop, -restart are given. If -pid is given without any of these, -start is assumed.\n",
            "subsections": [
                {
                    "name": "-start",
                    "content": "Run as a daemon. The pid option is required.  courierlogger will quietly terminate if\nanother courierlogger process is already running. This is used to make sure that only one\ninstance of program is running at the same time. Specify a different filename with pid to\nstart a second copy of program.\n"
                },
                {
                    "name": "-respawn",
                    "content": "Restart program if it terminates. Normally courierlogger itself will terminate when\nprogram finishes running. Use respawn to restart it instead.\n"
                },
                {
                    "name": "-restart",
                    "content": "Send a SIGHUP signal to the courierlogger process (as determined by examining the\ncontents of the file specified by pid), which will in turn send a SIGHUP to its child\nprogram. Does nothing if courierlogger is not running.\n\nNote\nprogram must be originally started with the respawn option if sending it a SIGHUP\ncauses it to terminate.\nThe same thing may be accomplished by sending SIGHUP to courierlogger itself.\n"
                },
                {
                    "name": "-stop",
                    "content": "Send a SIGTERM signal to courierlogger, which in turn forwards it on to program. If\nprogram does not terminate in 8 seconds, kill it with SIGKILL.\n\n-user=user, -group=group\nIf running as root, change credentials to the given user and/or group, which may be given\nas names or numeric ids.\n\nWhen running a child program, it is started before privileges are dropped (unless the\n-droproot option is also given). This gives a means of starting a child as root so it can\nbind to a privileged port, but still have courierlogger run as a non-root user. For the\n-stop and -restart options to work, you should configure the child program to drop its\nprivileges to the same userid too.\n"
                },
                {
                    "name": "-droproot",
                    "content": "Drop root privileges before starting the child process. The -user and -group options\nspecify the non-privileges userid and groupid. Without the -droproot option the child\nprocess remains a root process, and only the parent courierlogger process drops root\nprivileges.\n\nprogram [ argument ] ...\nIf a program is given program will be started as a child process of courierlogger,\ncapturing its standard error. Otherwise, courierlogger reads message from standard input,\nand automatically terminates when standard input is closed.\n"
                }
            ]
        },
        "SEE ALSO": {
            "content": "couriertcpd(1)[1], your syslog man page.\n",
            "subsections": []
        },
        "NOTES": {
            "content": "1. couriertcpd(1)\n[set $man.base.url.for.relative.links]/couriertcpd.html\n\nDouble Precision, Inc.                       05/21/2021                             COURIERLOGGER(1)",
            "subsections": []
        }
    },
    "summary": "courierlogger - Courier syslog wrapper",
    "flags": [
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Run as a daemon. The pid option is required. courierlogger will quietly terminate if another courierlogger process is already running. This is used to make sure that only one instance of program is running at the same time. Specify a different filename with pid to start a second copy of program."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Restart program if it terminates. Normally courierlogger itself will terminate when program finishes running. Use respawn to restart it instead."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Send a SIGHUP signal to the courierlogger process (as determined by examining the contents of the file specified by pid), which will in turn send a SIGHUP to its child program. Does nothing if courierlogger is not running. Note program must be originally started with the respawn option if sending it a SIGHUP causes it to terminate. The same thing may be accomplished by sending SIGHUP to courierlogger itself."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Send a SIGTERM signal to courierlogger, which in turn forwards it on to program. If program does not terminate in 8 seconds, kill it with SIGKILL. -user=user, -group=group If running as root, change credentials to the given user and/or group, which may be given as names or numeric ids. When running a child program, it is started before privileges are dropped (unless the -droproot option is also given). This gives a means of starting a child as root so it can bind to a privileged port, but still have courierlogger run as a non-root user. For the -stop and -restart options to work, you should configure the child program to drop its privileges to the same userid too."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "Drop root privileges before starting the child process. The -user and -group options specify the non-privileges userid and groupid. Without the -droproot option the child process remains a root process, and only the parent courierlogger process drops root privileges. program [ argument ] ... If a program is given program will be started as a child process of courierlogger, capturing its standard error. Otherwise, courierlogger reads message from standard input, and automatically terminates when standard input is closed."
        }
    ],
    "examples": [],
    "see_also": [
        {
            "name": "couriertcpd",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/couriertcpd/1/json"
        }
    ]
}