Class LoggingHandler
- java.lang.Object
-
- java.util.logging.Handler
-
- com.google.cloud.logging.LoggingHandler
-
public class LoggingHandler extends Handler
A logging handler that outputs logs generated withLogger
to Cloud Logging.Java logging levels (see
Level
) are mapped to the following Google Cloud Logging severities:Mapping of Java logging level to Cloud Logging severities Java Level Cloud Logging Severity SEVERE ERROR WARNING WARNING INFO INFO CONFIG INFO FINE DEBUG FINER DEBUG FINEST DEBUG Original Java logging levels are added as labels (with
levelName
andlevelValue
keys, respectively) to the corresponding Cloud LoggingLogEntry
. You can read entry labels usingLogEntry.getLabels()
. To use logging levels that correspond to Cloud Logging severities you can useLoggingLevel
.Configuration: By default each
LoggingHandler
is initialized using the followingLogManager
configuration properties (that you can set in thelogging.properties
file). If properties are not defined (or have invalid values) then the specified default values are used.com.google.cloud.logging.LoggingHandler.log
the log name (defaults tojava.log
).com.google.cloud.logging.LoggingHandler.level
specifies the default level for the handler (defaults toLevel.INFO
).com.google.cloud.logging.LoggingHandler.filter
specifies the name of aFilter
class to use (defaults to no filter).com.google.cloud.logging.LoggingHandler.formatter
specifies the name of aFormatter
class to use (defaults toSimpleFormatter
).com.google.cloud.logging.LoggingHandler.flushLevel
specifies the flush log level. When a log with this level is published, logs are transmitted to the Cloud Logging service (defaults toLoggingLevel.ERROR
).com.google.cloud.logging.LoggingHandler.enhancers
specifies a comma separated list ofLoggingEnhancer
classes. This handler will call each enhancer list whenever it builds aLogEntry
instance (defaults to empty list).com.google.cloud.logging.LoggingHandler.resourceType
the type name to use when creating the defaultMonitoredResource
(defaults to auto-detected resource type, else "global").com.google.cloud.logging.Synchronicity
the synchronicity of the write method to use to write logs to the Cloud Logging service (defaults toSynchronicity.ASYNC
).com.google.cloud.logging.LoggingHandler.autoPopulateMetadata
is a boolean flag that opts-out the population of the log entries metadata before the logs are sent to Cloud Logging (defaults totrue
).com.google.cloud.logging.LoggingHandler.redirectToStdout
is a boolean flag that opts-in redirecting the output of the handler to STDOUT instead of ingesting logs to Cloud Logging using Logging API (defaults tofalse
). Redirecting logs can be used in Google Cloud environments with installed logging agent to delegate log ingestions to the agent. Redirected logs are formatted as one line Json string following the structured logging guidelines. This flag is deprecated; usecom.google.cloud.logging.LoggingHandler.logTarget
instead.com.google.cloud.logging.LoggingHandler.logTarget
is an enumeration controlling log routing (defaults toCLOUD_LOGGING
). If set to STDOUT or STDERR, logs will be printed to the corresponding stream in the Json format that can be parsed by the logging agent. If set to CLOUD_LOGGING, logs will be sent directly to the Google Cloud Logging API.
To add a
LoggingHandler
to an existingLogger
and be sure to avoid infinite recursion when logging, use theaddHandler(Logger, LoggingHandler)
method. Alternatively you can add the handler vialogging.properties
. For example using the following line:com.example.mypackage.handlers=com.google.cloud.logging.LoggingHandler
- See Also:
- Structured logging
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LoggingHandler.LogTarget
Where to send logs.
-
Constructor Summary
Constructors Constructor Description LoggingHandler()
Creates an handler that publishes messages to Cloud Logging.LoggingHandler(String log)
Creates a handler that publishes messages to Cloud Logging.LoggingHandler(String log, LoggingOptions options)
Creates a handler that publishes messages to Cloud Logging.LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource)
Creates a handler that publishes messages to Cloud Logging.LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource, List<LoggingEnhancer> enhancers)
Creates a handler that publishes messages to Cloud Logging.LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource, List<LoggingEnhancer> enhancers, LogDestinationName destination)
Creates a handler that publishes messages to Cloud Logging.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static void
addHandler(Logger logger, LoggingHandler handler)
Adds the providedLoggingHandler
tologger
.void
close()
Closes the handler and the associatedLogging
object.void
flush()
Boolean
getAutoPopulateMetadata()
Gets the metadata auto population flag.Level
getFlushLevel()
Get the flush log level.LoggingHandler.LogTarget
getLogTarget()
Boolean
getRedirectToStdout()
Deprecated.Synchronicity
getSynchronicity()
Get the flush log level.protected LogEntry.Builder
logEntryFor(LogRecord record)
void
publish(LogRecord record)
void
setAutoPopulateMetadata(boolean value)
Sets the metadata auto population flag.void
setFlushLevel(Level flushLevel)
Sets minimum logging level to log immediately and flush any pending writes.void
setLogTarget(LoggingHandler.LogTarget value)
Configure the destination for ingested logs.void
setRedirectToStdout(boolean value)
Deprecated.void
setSynchronicity(Synchronicity synchronicity)
Sets synchronicity of logging writes.-
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
-
-
-
-
Constructor Detail
-
LoggingHandler
public LoggingHandler()
Creates an handler that publishes messages to Cloud Logging.
-
LoggingHandler
public LoggingHandler(String log)
Creates a handler that publishes messages to Cloud Logging.- Parameters:
log
- the name of the log to which log entries are written
-
LoggingHandler
public LoggingHandler(String log, LoggingOptions options)
Creates a handler that publishes messages to Cloud Logging.- Parameters:
log
- the name of the log to which log entries are writtenoptions
- options for the Cloud Logging service
-
LoggingHandler
public LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource)
Creates a handler that publishes messages to Cloud Logging.- Parameters:
log
- the name of the log to which log entries are writtenoptions
- options for the Cloud Logging servicemonitoredResource
- the monitored resource to which log entries refer. If it is null then a default resource is created based on the project ID and deployment environment.
-
LoggingHandler
public LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource, List<LoggingEnhancer> enhancers)
Creates a handler that publishes messages to Cloud Logging.- Parameters:
log
- the name of the log to which log entries are writtenoptions
- options for the Cloud Logging servicemonitoredResource
- the monitored resource to which log entries refer. If it is null then a default resource is created based on the project ID and deployment environment.enhancers
- List ofLoggingEnhancer
instances used to enhance anyLogEntry
instances built by this handler.
-
LoggingHandler
public LoggingHandler(String log, LoggingOptions options, com.google.cloud.MonitoredResource monitoredResource, List<LoggingEnhancer> enhancers, LogDestinationName destination)
Creates a handler that publishes messages to Cloud Logging. Auto-population of the logs metadata can be opted-out inoptions
argument or in the configuration file. At least one flagLoggingOptions
orLoggingConfig
has to be explicitly set tofalse
in order to opt-out the metadata auto-population.- Parameters:
log
- the name of the log to which log entries are writtenoptions
- options for the Cloud Logging servicemonitoredResource
- the monitored resource to which log entries refer. If it is null then a default resource is created based on the project ID and deployment environment.enhancers
- List ofLoggingEnhancer
instances used to enhance anyLogEntry
instances built by this handler.destination
- the log destinationLogDestinationName
(see 'logName' parameter in https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry)
-
-
Method Detail
-
logEntryFor
protected LogEntry.Builder logEntryFor(LogRecord record)
-
close
public void close()
Closes the handler and the associatedLogging
object.
-
getFlushLevel
public Level getFlushLevel()
Get the flush log level.
-
setFlushLevel
public void setFlushLevel(Level flushLevel)
Sets minimum logging level to log immediately and flush any pending writes.- Parameters:
flushLevel
- minimum log level to trigger flush
-
setSynchronicity
public void setSynchronicity(Synchronicity synchronicity)
Sets synchronicity of logging writes. By default, writes are asynchronous.- Parameters:
synchronicity
-Synchronicity
-
getSynchronicity
public Synchronicity getSynchronicity()
Get the flush log level.
-
setAutoPopulateMetadata
public void setAutoPopulateMetadata(boolean value)
Sets the metadata auto population flag.
-
getAutoPopulateMetadata
public Boolean getAutoPopulateMetadata()
Gets the metadata auto population flag.
-
setRedirectToStdout
@Deprecated public void setRedirectToStdout(boolean value)
Deprecated.Enable/disable redirection to STDOUT. If set totrue
, logs will be printed to STDOUT in the Json format that can be parsed by the logging agent. If set tofalse
, logs will be ingested to Cloud Logging by calling Logging API.This method is mutually exclusive with
setLogTarget(LogTarget)
.
-
getRedirectToStdout
@Deprecated public Boolean getRedirectToStdout()
Deprecated.
-
setLogTarget
public void setLogTarget(LoggingHandler.LogTarget value)
Configure the destination for ingested logs. If set to STDOUT or STDERR, logs will be printed to the corresponding stream in the Json format that can be parsed by the logging agent. If set to CLOUD_LOGGING, logs will be sent directly to the Google Cloud Logging API.This method is mutually exclusive with
setRedirectToStdout(boolean)
.
-
getLogTarget
public LoggingHandler.LogTarget getLogTarget()
-
addHandler
public static void addHandler(Logger logger, LoggingHandler handler)
Adds the providedLoggingHandler
tologger
. Use this method to register Cloud Logging handlers instead ofLogger.addHandler(Handler)
to avoid infinite recursion when logging.
-
-