# ***************************************************************************************************************************
# * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
# * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
# * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
# * with the License.  You may obtain a copy of the License at                                                              * 
# *                                                                                                                         *
# *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
# *                                                                                                                         *
# * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
# * specific language governing permissions and limitations under the License.                                              *
# ***************************************************************************************************************************

#=======================================================================================================================
# Basic configuration file for REST microservices
# Subprojects can use this as a starting point.
#=======================================================================================================================

#=======================================================================================================================
# Jetty settings
#=======================================================================================================================
[Jetty]

# Path of the jetty.xml file used to configure the Jetty server.
config = files/jetty.xml

# Resolve Juneau variables in the jetty.xml file.
resolveVars = true

# Port to use for the jetty server.
# You can specify multiple ports.  The first available will be used.  '0' indicates to try a random port.
# The resulting available port gets set as the system property "availablePort" which can be referenced in the 
# jetty.xml file as "$S{availablePort}" (assuming resolveVars is enabled).
port = 10000,0,0,0

# Optionally specify your servlets here:
#servlets = org.apache.juneau.microservice.jetty.template.RootResources

#=======================================================================================================================
# REST settings
#=======================================================================================================================
[REST]

# Comma-delimited list of key-value pairs that represent locations of static files that can be served up by your @RestResource-annotated
# classes.  These are static files that are served up by the servlet under the specified sub-paths.
# For example, given the following setting...
# 	staticFiles = htdocs:my-docs,styles/my-styles
# ...the URI "/servletPath/htdocs/javadoc.css" resolves to the path "/my-docs/javadoc.css".
# This path can be relative to the working directory, classpath root, or package of your resource class.
# Used by the BasicRestConfig interface that defines the following value:
# 	staticFiles="$C{REST/staticFiles}"
staticFiles = htdocs:htdocs

# Stylesheet to use for HTML views.
# Used by the BasicRestConfig interface that defines the following value:
# 	stylesheet="$C{REST/theme,servlet:/htdocs/themes/devops.css}"
theme = servlet:/htdocs/themes/devops.css

# Various look-and-feel settings used in the BasicRestConfig interface.
headerIcon = servlet:/htdocs/images/juneau.png
headerLink = http://juneau.apache.org
footerIcon = servlet:/htdocs/images/asf.png
footerLink = http://www.apache.org
favicon = $C{REST/headerIcon}
head = <link rel='icon' href='$U{$C{REST/favicon}}'/>
header = 
	<a href='$U{$C{REST/headerLink}}'>
		<img src='$U{$C{REST/headerIcon}}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/>
	</a>
footer = 
	<a href='$U{$C{REST/footerLink}}'>
		<img src='$U{$C{REST/footerIcon}}' style='float:right;padding-right:20px;height:32px'/>
	</a>

#=======================================================================================================================
# Console settings
#=======================================================================================================================
[Console]

enabled = true

# List of available console commands.
# These are classes that implements ConsoleCommand that allow you to submit commands to the microservice via
# the console.
# When listed here, the implementations must provide a no-arg constructor.
# They can also be provided dynamically by overriding the Microservice.createConsoleCommands() method.
commands = 
	org.apache.juneau.microservice.console.ExitCommand,
	org.apache.juneau.microservice.console.RestartCommand,
	org.apache.juneau.microservice.console.HelpCommand,
	org.apache.juneau.microservice.console.ConfigCommand
	
#=======================================================================================================================
# Logger settings
#-----------------------------------------------------------------------------------------------------------------------
# See FileHandler Java class for details.
#=======================================================================================================================
[Logging]

# The directory where to create the log file.
# Default is "."
logDir = logs

# The name of the log file to create for the main logger.
# The logDir and logFile make up the pattern that's passed to the FileHandler
# constructor.
# If value is not specified, then logging to a file will not be set up.
logFile = microservice.%g.log

# Whether to append to the existing log file or create a new one.
append = false

# The SimpleDateFormat format to use for dates.
dateFormat = yyyy.MM.dd hh:mm:ss

# The log message format.
# The value can contain any of the following variables:
# 	{date} - The date, formatted per dateFormat.
#	{class} - The class name.
#	{method} - The method name.
#	{logger} - The logger name.
#	{level} - The log level name.
#	{msg} - The log message.
#	{threadid} - The thread ID.
#	{exception} - The localized exception message.
format = [{date} {level}] {msg}%n

# The maximum log file size.
# Suffixes available for numbers.
# See Config.getInt(String,int) for details.
limit = 1M

# Max number of log files.
count = 5

# Default log levels.
# Format is lax-JSON.
# Keys are logger names.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
levels = 
	{ 
		'': 'WARNING', 
		org.apache.juneau: 'WARNING', 
		org.eclipse.jetty: 'WARNING' 
	}

# Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.
# Useful for preventing log files from filling up with duplicate stack traces.
useStackTraceHashes = true

# The default level for the console logger.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
consoleLevel = WARNING

# The default level for the file logger.
# Values are serialized Level POJOs (SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)
fileLevel = INFO

#=======================================================================================================================
# System properties
#-----------------------------------------------------------------------------------------------------------------------
# These are arbitrary system properties that are set during startup.
#=======================================================================================================================
[SystemProperties]

# Configure Jetty for StdErrLog Logging
# org.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.StrErrLog

# Configure Jetty to log using java-util logging
org.eclipse.jetty.util.log.class = org.apache.juneau.microservice.jetty.template.JettyLogger

# Jetty logging level
# Possible values:  ALL, DEBUG, INFO, WARN, OFF
org.eclipse.jetty.LEVEL = WARN

derby.stream.error.file = $C{Logging/logDir}/derby-errors.log
