Search

Chapter 12. Enabling Logshifter

download PDF
Using logshifter enables automatic log rotation and consolidation across cartridges in a gear. In OpenShift Enterprise, cartridges can log to Syslog using logshifter. For more information about logshifter, see the logshifter README file.
When writing a cartridge control script, it is typical to spawn a runtime process such as java or mongod. To take advantage of logshifter, redirect the standard out (STDOUT) and standard error (STEDRR) streams of the process to the /usr/bin/logshifter file. For example, for a Java-based cartridge:

Example 12.1. Redirecting Logs Using Logshifter:

java ... |& /usr/bin/logshifter -tag my-cartridge &
Using this method, java is started in the background, and all output produced by the application is logged through logshifter. The -tag argument must be a string unique to the cartridge.
Tips for PID Management

In the example above, the standard pipe operator is used from a shell script to redirect logs from the cartridge process to logshifter. This works well for programs which are capable of managing a PID file internally. However, for cartridges which bootstrap a process and cannot manage a PID file by itself, using a simple pipe operator can be problematic. When piping programs using a shell, the programs are typically started in parallel, rendering the $! variable unreliable for determining the PID of the cartridge process. For these cases, setting up a named pipe can allow the cartridge to use logshifter and also manage the PID of the process. The following example demonstrates the setup of a named pipe used by a Java cartridge which preserves the reliability of $! so the cartridge script can manage the PID file manually:

Example 12.2. Setting Up Named Pipe:

LOGPIPE=${OPENSHIFT_HOMEDIR}/app-root/runtime/logshifter-my-cartridge
rm -f $LOGPIPE && mkfifo $LOGPIPE

/usr/bin/logshifter -tag my-cartridge < $LOGPIPE &
java ... &> $LOGPIPE &
echo $! > $OPENSHIFT_MY_CARTRIDGE_DIR/my-cartridge.pid
Setting up the named pipe manually provides the most flexibility for managing both the logshifter and cartridge processes.
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.