set-log-attributes(1)     asadmin Utility Subcommands    set-log-attributes(1)

NAME
       set-log-attributes - sets the logging attributes for one or more
       loggers

SYNOPSIS
           set-log-attributes [--help] [--target=target]
           attribute-name=attribute-value[:attribute-name=attribute-value]*

DESCRIPTION
       The set-log-attributes subcommand sets logging attributes for one or
       more loggers. The attributes you can set correspond to the attributes
       that are available in the logging.properties file for the domain.
       Depending on the attributes you set, a server restart may be necessary.

       This subcommand is supported in remote mode only.

OPTIONS
       --help, -?
           Displays the help text for the subcommand.

       --target
           The server domain, instance, or cluster for which logger attributes
           will be set. If this option is omitted, attributes are set for the
           default server.

OPERANDS
       target
           Valid values are:

           *   server_name - Default target is server. If no target is
               specified then log attributes are set for the server.

           *   cluster_name - The name of a target cluster.

           *   instance_name - The name of a target server instance.

       attribute-name
           The fully scoped name of the logging attribute. The
           list-log-attributes subcommand can be used to list the names of all
           currently defined attributes.

       attribute-value
           The value to apply to the specified attribute.

           The attribute values that can be specified include the following.
           Refer to "Administering the Logging Service" in Oracle GlassFish
           Server Administration Guide for complete explanations of each of
           these values.

           com.sun.enterprise.server.logging.GFFileHandler.alarms
               Default is false.

           com.sun.enterprise.server.logging.GFFileHandler.excludeFields
               Default is an empty string.

           com.sun.enterprise.server.logging.GFFileHandler.file
               Default is ${com.sun.aas.instanceRoot}/logs/server.log.

           com.sun.enterprise.server.logging.GFFileHandler.flushFrequency
               Default is 1.

           com.sun.enterprise.server.logging.GFFileHandler.formatter
               Default is
               com.sun.enterprise.server.logging.UniformLogFormatter.

           com.sun.enterprise.server.logging.GFFileHandler.logtoConsole
               Default is false.

           com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles
               Default is 0.

           com.sun.enterprise.server.logging.GFFileHandler.multiLineMode
               Default is true.

           com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours
               Default is 0.

           com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes
               Default is 2000000.

           com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes
               Default is 0.

           com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging
               Default is false.

           handlers
               Default is java.util.logging.ConsoleHandler.

           java.util.logging.ConsoleHandler.formatter
               Default is
               com.sun.enterprise.server.logging.UniformLogFormatter.

           java.util.logging.FileHandler.count
               Default is 1.

           java.util.logging.FileHandler.formatter
               Default is java.util.logging.XMLFormatter.

           java.util.logging.FileHandler.limit
               Default is 50000.

           java.util.logging.FileHandler.pattern
               Default is %h/java%u.log.

           log4j.logger.org.hibernate.validator.util.Version
               Default is warn.

EXAMPLES
       Example 1, Setting the Maximum Number of Log History Files to Maintain
           This example sets to 8 the maximum number of log history files for
           the server as a whole.

               asadmin> set-log-attributes --target=server \
               com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=8
               com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles logging
               attribute set with value 8.
               These logging attributes are set for server.
               Command set-log-attributes executed successfully.

EXIT STATUS
       0
           subcommand executed successfully

       1
           error in executing the subcommand

SEE ALSO
       collect-log-files(1), list-log-attributes(1), list-log-levels(1),
       rotate-log(1), set-log-levels(1)

       asadmin(1M)

       "Administering the Logging Service" in Oracle GlassFish Server
       Administration Guide

Java EE 8                         12 Feb 2011            set-log-attributes(1)
