#
# Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#

#GlassFish logging.properties list
#Update Thurs Oct 18 2012
#All attributes details
handlers=java.util.logging.ConsoleHandler
handlerServices=com.sun.enterprise.server.logging.GFFileHandler
java.util.logging.ConsoleHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.ODLLogFormatter
com.sun.enterprise.server.logging.GFFileHandler.file=${com.sun.aas.instanceRoot}/logs/server.log
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency=1
java.util.logging.FileHandler.limit=50000
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=false
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=2000000
com.sun.enterprise.server.logging.GFFileHandler.excludeFields=
com.sun.enterprise.server.logging.GFFileHandler.multiLineMode=true
com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=false
java.util.logging.FileHandler.count=1
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0
log4j.logger.org.hibernate.validator.util.Version=warn
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=0
com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange=false
java.util.logging.FileHandler.pattern=%h/java%u.log
java.util.logging.FileHandler.formatter=java.util.logging.XMLFormatter

#All log level details
com.sun.enterprise.server.logging.GFFileHandler.level=ALL
jakarta.enterprise.system.tools.admin.level=INFO
org.apache.jasper.level=INFO
jakarta.enterprise.system.core.level=INFO
jakarta.enterprise.system.core.classloading.level=INFO
java.util.logging.ConsoleHandler.level=FINEST
jakarta.enterprise.system.tools.deployment.level=INFO
jakarta.enterprise.system.core.transaction.level=INFO
org.apache.catalina.level=INFO
org.apache.coyote.level=INFO
javax.level=INFO
jakarta.enterprise.system.util.level=INFO
jakarta.enterprise.resource.resourceadapter.level=INFO
jakarta.enterprise.system.core.config.level=INFO
jakarta.enterprise.system.level=INFO
jakarta.enterprise.system.core.security.level=INFO
jakarta.enterprise.system.container.cmp.level=INFO
jakarta.enterprise.system.core.selfmanagement.level=INFO
.level=INFO
jakarta.enterprise.resource.jdo.level=INFO
jakarta.enterprise.resource.sqltrace.level=FINE
org.jvnet.hk2.osgiadapter.level=INFO
jakarta.enterprise.system.ssl.security.level=INFO
ShoalLogger.level=CONFIG
