#
# Copyright (c) 2010, 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
#Mon Mar 16 22:32:12 PDT 2009
jakarta.enterprise.system.tools.admin.level=INFO
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter
org.apache.jasper.level=INFO
jakarta.enterprise.resource.corba.level=INFO
jakarta.enterprise.system.core.classloading.level=INFO
jakarta.enterprise.resource.jta.level=INFO
java.util.logging.ConsoleHandler.level=FINEST
com.sun.enterprise.server.logging.GFFileHandler.file=logs/server.log
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0
jakarta.enterprise.system.webservices.saaj.level=INFO
java.util.logging.FileHandler.formatter=java.util.logging.XMLFormatter
jakarta.enterprise.system.tools.deployment.level=INFO
jakarta.enterprise.system.container.ejb.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.formatter=com.sun.enterprise.server.logging.UniformLogFormatter
jakarta.enterprise.system.core.transaction.level=INFO
org.apache.catalina.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes=0
jakarta.enterprise.system.container.ejb.mdb.level=INFO
org.apache.coyote.level=INFO
javax.level=INFO
java.util.logging.FileHandler.limit=50000
jakarta.enterprise.resource.javamail.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole=false
jakarta.enterprise.system.webservices.rpc.level=INFO
jakarta.enterprise.system.container.web.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=0
jakarta.enterprise.system.util.level=INFO
jakarta.enterprise.resource.resourceadapter.level=INFO
jakarta.enterprise.resource.jms.level=INFO
jakarta.enterprise.system.core.config.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes=0
jakarta.enterprise.system.level=INFO
jakarta.enterprise.system.core.security.level=INFO
jakarta.enterprise.system.container.cmp.level=INFO
java.util.logging.FileHandler.pattern=%h/java%u.log
com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging=false
group-management-services=INFO
com.sun.enterprise.server.logging.GFFileHandler.alarms=false
jakarta.enterprise.system.webservices.registry.level=INFO
jakarta.enterprise.system.core.selfmanagement.level=INFO
.level=INFO
java.util.logging.FileHandler.count=1
jakarta.enterprise.resource.jdo.level=INFO
jakarta.enterprise.system.core.naming.level=INFO
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours=0
