What is the variable 'log'?

The log variable is injected into every ScriptRunner inline script, and its value is equivalent to:

def log = Logger.getLogger("com.onresolve.scriptrunner.runner.ScriptRunnerImpl")

log is an instance of a Logger.

Using your own logger

It might be preferable to use your own logger so that you can adjust logging levels separately from ScriptRunner as a whole.

In an inline script, or file, you can do this using the following code:

import org.apache.log4j.Logger

def log = Logger.getLogger("com.acme.workflows")
log.warn("Workflow function running...")

If you use classes the simplest way to get a logger is to use the @Log4j annotation:

package com.acme.workflows

import groovy.util.logging.Log4j

@Log4j
class Foo {

    void utilityMethod() {
        log.warn "Foo.utilityMethod"
    }
}

In the above example, the log instance is automatically created and will have the category com.acme.workflows.Foo, that is, the fully qualified class name.

This is the best way of logging, as it will automatically wrap calls to the logger in the relevant guarding function, e.g. if (log.isDebugEnabled()) {log.debug(…​)}
Confluence uses log4j 1x, if browsing the documentation be sure you are not looking at the documentation for log4j 2x.

Log levels

A log message will only be printed if the "level" is the same or higher than the configured level for that category. This is a longer explanation here.

The default log level for most categories is WARN. Thus if you want to use use log.debug, you must be set the category level to DEBUG or TRACE.

A simple way to change the level for a category is via a script, which you can run from the Script Console:

import org.apache.log4j.Level
import org.apache.log4j.Logger

def log = Logger.getLogger("com.acme.workflows")
log.setLevel(Level.DEBUG)

This will set the level until you change it back (replace Level.DEBUG with Level.WARN), or until the application instance is restarted.

You can change it permanently by adjusting the log4j.properties files - see the Confluence documentation.

The final method of changing log levels is via the Logging and Profiling administration page, but you can only do that if there was already an entry for the category in log4j.properties.

For how-to questions please ask on Atlassian Answers where there is a very active community. Adaptavist staff are also likely to respond there.

Ask a question about ScriptRunner for JIRA, for for Bitbucket Server, or for Confluence.