Class ClientLogger


  • public class ClientLogger
    extends Object
    This is a fluent logger helper class that wraps a pluggable Logger.

    This logger logs format-able messages that use {} as the placeholder. When a throwable is the last argument of the format varargs and the logger is enabled for verbose, the stack trace for the throwable is logged.

    A minimum logging level threshold is determined by the AZURE_LOG_LEVEL environment configuration. By default logging is disabled.

    Log level hierarchy

    1. Error
    2. Warning
    3. Info
    4. Verbose
    See Also:
    Configuration
    • Constructor Detail

      • ClientLogger

        public ClientLogger​(Class<?> clazz)
        Retrieves a logger for the passed class using the LoggerFactory.
        Parameters:
        clazz - Class creating the logger.
      • ClientLogger

        public ClientLogger​(String className)
        Retrieves a logger for the passed class name using the LoggerFactory.
        Parameters:
        className - Class name creating the logger.
        Throws:
        RuntimeException - it is an error.
    • Method Detail

      • log

        public void log​(LogLevel logLevel,
                        Supplier<String> message)
        Logs a format-able message that uses {} as the placeholder at the given logLevel.

        Code samples

        Logging with a specific log level

         logger.log(LogLevel.VERBOSE,
             () -> String.format("Param 1: %s, Param 2: %s, Param 3: %s", "param1", "param2", "param3"));
         
        Parameters:
        logLevel - Logging level for the log message.
        message - The format-able message to log.
      • log

        public void log​(LogLevel logLevel,
                        Supplier<String> message,
                        Throwable throwable)
        Logs a format-able message that uses {} as the placeholder at verbose log level.

        Code samples

        Logging with a specific log level and exception

         Throwable illegalArgumentException = new IllegalArgumentException("An invalid argument was encountered.");
         logger.log(LogLevel.VERBOSE,
             () -> String.format("Param 1: %s, Param 2: %s, Param 3: %s", "param1", "param2", "param3"),
             illegalArgumentException);
         
        Parameters:
        logLevel - Logging level for the log message.
        message - The format-able message to log.
        throwable - Throwable for the message. Throwable.
      • verbose

        public void verbose​(String message)
        Logs a message at verbose log level.

        Code samples

        Logging a message at verbose log level.

         logger.verbose("A log message");
         
        Parameters:
        message - The message to log.
      • verbose

        public void verbose​(String format,
                            Object... args)
        Logs a format-able message that uses {} as the placeholder at verbose log level.

        Code samples

        Logging a message at verbose log level.

         logger.verbose("A formattable message. Hello, {}", name);
         
        Parameters:
        format - The formattable message to log.
        args - Arguments for the message. If an exception is being logged, the last argument should be the Throwable.
      • info

        public void info​(String message)
        Logs a message at info log level.

        Code samples

        Logging a message at verbose log level.

         logger.info("A log message");
         
        Parameters:
        message - The message to log.
      • info

        public void info​(String format,
                         Object... args)
        Logs a format-able message that uses {} as the placeholder at informational log level.

        Code samples

        Logging a message at informational log level.

         logger.info("A formattable message. Hello, {}", name);
         
        Parameters:
        format - The format-able message to log
        args - Arguments for the message. If an exception is being logged, the last argument should be the Throwable.
      • warning

        public void warning​(String message)
        Logs a message at warning log level.

        Code samples

        Logging a message at warning log level.

         Throwable detailedException = new IllegalArgumentException("A exception with a detailed message");
         logger.warning(detailedException.getMessage());
         
        Parameters:
        message - The message to log.
      • warning

        public void warning​(String format,
                            Object... args)
        Logs a format-able message that uses {} as the placeholder at warning log level.

        Code samples

        Logging a message at warning log level.

         Throwable exception = new IllegalArgumentException("An invalid argument was encountered.");
         logger.warning("A formattable message. Hello, {}", name, exception);
         
        Parameters:
        format - The format-able message to log.
        args - Arguments for the message. If an exception is being logged, the last argument should be the Throwable.
      • error

        public void error​(String message)
        Logs a message at error log level.

        Code samples

        Logging a message at error log level.

         try {
             upload(resource);
         } catch (IOException ex) {
             logger.error(ex.getMessage());
         }
         
        Parameters:
        message - The message to log.
      • error

        public void error​(String format,
                          Object... args)
        Logs a format-able message that uses {} as the placeholder at error log level.

        Code samples

        Logging an error with stack trace.

         try {
             upload(resource);
         } catch (IOException ex) {
             logger.error("A formattable message. Hello, {}", name, ex);
         }
         
        Parameters:
        format - The format-able message to log.
        args - Arguments for the message. If an exception is being logged, the last argument should be the Throwable.
      • logThrowableAsWarning

        public <T extends Throwable> T logThrowableAsWarning​(T throwable)
        Logs the Throwable at the warning level and returns it to be thrown.

        This API covers the cases where a checked exception type needs to be thrown and logged. If a RuntimeException is being logged use logExceptionAsWarning(RuntimeException) instead.

        Type Parameters:
        T - Type of the Throwable being logged.
        Parameters:
        throwable - Throwable to be logged and returned.
        Returns:
        The passed Throwable.
        Throws:
        NullPointerException - If throwable is null.
      • logThrowableAsError

        public <T extends Throwable> T logThrowableAsError​(T throwable)
        Logs the Throwable at the error level and returns it to be thrown.

        This API covers the cases where a checked exception type needs to be thrown and logged. If a RuntimeException is being logged use logExceptionAsError(RuntimeException) instead.

        Type Parameters:
        T - Type of the Throwable being logged.
        Parameters:
        throwable - Throwable to be logged and returned.
        Returns:
        The passed Throwable.
        Throws:
        NullPointerException - If throwable is null.
      • canLogAtLevel

        public boolean canLogAtLevel​(LogLevel logLevel)
        Determines if the app or environment logger support logging at the given log level.
        Parameters:
        logLevel - Logging level for the log message.
        Returns:
        Flag indicating if the environment and logger are configured to support logging at the given log level.